zaplog

功能

  • 實作使用高性能 zap log 框架

  • 擁有 log level 配置 (常用 debug/warn/info/error)與程式碼位置

  • 可以選擇印出在 console 或是文件(要外掛 lumberjack 去分割)

log New 三種創建方式

  • 通過調用zap.NewProduction()/zap.NewDevelopment()或者zap.Example()創建一個Logger。

  • 這三個方法的區別在於它將記錄的信息不同 see 參考

func InitLogger() {
	logger, _ := zap.NewDevelopment()

	zap.ReplaceGlobals(logger)
	zap.S().Infof("test log")
}
2022-09-18T11:45:11.416+0800    INFO    logger/zap.go:9 test log

//logger, _ := zap.NewProduction()
{"level":"info","ts":1663472751.050445,"caller":"logger/zap.go:9","msg":"test log"}

LOG 輸出選擇

  • zap.Logger 輸出需針對 Type 去輸入,使用跟印出看起來都比較麻煩一點

  • zap.SugaredLogger 就像是語法糖,函式可以增加易用性,但犧牲效能

時間格式:

#### ISO8601TimeEncoder

encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder 
//"2006-01-02T15:04:05.000Z0700"

時間顯示 2022-04-15T08:24:16.474+0800 INFO

#### 自定義:時間顯示到ms

時間顯示 2022-04-15T09:50:40.456340
encoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02T15:04:05.000000")

參考

Last updated