golang 日志打印后程序直接退出

Python015

golang 日志打印后程序直接退出,第1张

在一段 http get 的程序中,如果出现错误,打印日志后会导致程序退出。

将 log.Fatal 修改为 log.Println 即可解决问题。

感觉一个函数做了本不该它做的事情,有些好奇,golang 设计者的设计哲学。

日常开发当中需要将golang的log包打印的日志同时输出到控制台和文件,应该如何解决这个问题?

log包可以通过SetOutput()方法指定日志输出的方式(Writer),但是只能指定一个输出的方式(Writer)。我们利用io.MultiWriter()将多个Writer拼成一个Writer使用的特性,把log.Println()输出的内容分流到控制台和文件当中。

原文地址

一.几种公共方法

1)Print:   输出到控制台(不接受任何格式化,它等价于对每一个操作数都应用 %v)

print 在golang中 是属于输出到标准错误流中并打印,官方不建议写程序时候用它。可以再debug时候用

2)Println: 输出到控制台并换行

3)Printf : 只可以打印出格式化的字符串。只可以直接输出字符串类型的变量(不可以输出整形变量和整形等)

4)Sprintf:格式化并返回一个字符串而不带任何输出

5)Fprintf:来格式化并输出到 io.Writers 而不是 os.Stdout

二.带占位符输出--网址:     https://www.jianshu.com/p/8be8d36e779c

和python差不多的道理,这里简单补充

v     值的默认格式

%+v   添加字段名(如结构体)

%#v  相应值的Go语法表示 

%T    相应值的类型的Go语法表示 

%%    字面上的百分号,并非值的占位符

%c     相应Unicode码点所表示的字符 

%x     十六进制表示,字母形式为小写 a-f

%X     十六进制表示,字母形式为大写 A-F

%U     Unicode格式:U+1234,等同于 "U+%04X"