Go语言标准库log
Go语言标准库log
lycheeKing无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序中记录日志的好习惯。
log
Go语言内置的log
包实现了简单的日志服务。
1.使用标准Logger
log包定义了Logger
类型,该类型提供了一些格式化输出的方法。本包也提供了一个预定义的“标准”logger,可以通过调用函数Print系列(Print | Printf | Println)、Fatal系列(Fatal | Fatalf | Fatalln)、和Panic系列(Panic | Panicf | Panicln)来使用,比自行创建一个logger对象更容易使用。
例如,我们可以像下面的代码一样直接通过log包来调用上面提到的方法,默认它们会将日志信息打印到终端界面:
1 | package main |
编译并执行上面的代码会得到如下输出:
1 | 2022/10/11 14:04:17 这是一条很普通的日志。 |
logger会打印每条日志信息的日期、时间,默认输出到系统的标准错误。Fatal
系列函数会在写入日志信息后调用**os.Exit(1)
**。Panic
系列函数会在写入日志信息后panic
。
2.flag选项
log标准库还提供了如下的flag
选项,它们是一系列定义好的常量。
1 | const ( |
下面我们在记录日志之前先设置一下标准logger的输出选项如下:
1 | func main() { |
编译执行后得到的输出结果如下:
1 | 2022/10/11 14:05:17.494943 .../log_demo/main.go:11: 这是一条很普通的日志。 |
3.配置日志输出位置
SetOutput
函数用来设置标准logger的输出目的地,默认是标准错误输出。
例如,下面的代码会把日志输出到同目录下的xx.log
文件中。
1 | func main() { |
如果我们要使用标准的logger,通常会把上面的配置操作写到init
函数中。
1 | func init() { |
4.自定义logger
log标准库中还提供了一个创建新logger
对象的构造函数–New
,支持我们创建自己的logger示例。New
函数的签名如下:
1 | func New(out io.Writer, prefix string, flag int) *Logger |
New创建一个Logger对象。其中,参数out
设置日志信息写入的目的地。参数prefix
会添加到生成的每一条日志前面。参数flag
定义日志的属性(时间、文件等等)。
例如:
1 | func main() { |