Log 包是 Golang 内置的日志库,可以方便我们打印日志信息。本文将从以下几点介绍 Log 包的使用。
- 引入 log 包
我们可以使用 import 关键字来引入 log 包。
import "log"
- 打印日志
Log 包提供了多个用于打印日志的函数,其中最常用的是 Print、Printf、Println。
Print:打印一个或多个值,不带任何格式化。
log.Print("Hello, World!")
Printf:根据指定的格式,将一个或多个值转换成字符串并打印。
log.Printf("My name is %s, and I am %d years old","Alice", 23)
Println:打印一个或多个值,并以换行符结束。
log.Println("Hello, World!")
- 日志级别
Log 包提供了多个日志级别,从高到低分别为:
- Panic
- Fatal
- Error
- Warn
- Info
- Debug
- Trace
不同级别的日志会根据配置显示或隐藏,例如只显示 Error 级别以上的日志等。
- 配置日志输出位置
Log 包默认将日志输出到控制台(标准错误流),但我们可以通过配置来将日志输出到文件等其它位置。
可以使用 log.SetOutput() 函数进行配置,例如将日志输出到文件:
f, err := os.OpenFile("/var/log/myapp.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatal("Could not open log file", err)
}
defer f.Close()
log.SetOutput(f)
- 配置日志前缀
通过设定日志前缀可以方便我们在日志中区分不同的输出。
可以使用 log.SetPrefix() 函数进行配置:
log.SetPrefix("[MyApp]")
这样就会在每条日志输出前添加 [MyApp] 前缀。
- 配置日志日期与时间格式
可以使用 log.SetFlags() 函数来设定日期、时间输出格式。
log.SetFlags(log.Ldate | log.Ltime)
以上代码将日期和时间都输出到日志中。您还可以使用其他标志:
- Ldate:日期
- Ltime:时间
- Lmicroseconds:微秒级时间
- Llongfile:完整路径的文件名和行号: /a/b/c/d.go:23
- Lshortfile:最后一个元素的文件名和行号: d.go:23
对于更复杂的日志格式,也可以使用 log.New() 函数来创建一个定制的 Logger。
- 安全退出
如果出现严重的错误,可以使用 log.Panic() 或 log.Fatal() 函数来跑出一个 panic 或退出程序。
Panic 会打印日志信息并退出程序。Fatal 也会打印日志信息,并通过 os.Exit(1) 退出程序。
建议使用 log.Fatal(),因为它可以确保日志被正确输出。而使用 panic() 会导致日志信息可能丢失。
- 总结
通过以上几点介绍,相信您已经了解了如何使用 Log 包来打印日志信息,并进行相关的配置。Log 包不仅使用简单,且功能完备,是您开发 Golang 应用程序的不二之选。