日志作为一种记录应用运行状态的方式,在日常开发中是必不可少的功能。每种语言都有其相对应的日志库供开发者使用。对于Go语言,虽然有时可以用fmt库输出一些信息,但是不够灵活。Go 语言在标准库中提供了一个日志库log,用于记录程序中的日志信息。
import "log"
func main() {
var hello := "hello"
var world := "world"
log.Printf("this is a test, %s %s", hello, world)
log.Panicf("this is a test, %s", hello)
log.Fatalf("this is a test, %s", world)
}
log提供了三组函数:
- Print/Printf/Println:正常输出日志;
- Panic/Panicf/Panicln:输出日志后,以日志字符串为参数调用panic;
- Fatal/Fatalf/Fatalln:输出日志后,调用os.Exit(1)退出程序。
默认在通过标准错误stderr输出。
日志格式
- log.SetPrefix为每条日志文本设置前缀。
- log.SetFlags为每条日志增加一些额外信息,如日期时间、文件名等。
日志输出
log.New可以将日志输出到指定文件或其它地方。
log.New有三个参数:
- io.Writer:日志都会写到这个Writer中;
- prefix:前缀,也可通过SetPrefix设置;
- flag:选项,也可通过SetFlag设置。
log实现了一个小巧的日志库,可在应用中简单使用。 如果log库的功能不能满足需求,社区也涌现了很多功能丰富的日志库,可以选择适合自己日志库使用。