Go uber zap preset logger效果比較。
三者效果差別如下:
範例環境:
- Go 1.16
- zap v1.19.1
NewExample
NewExample
用於範例環境。
main.go
package main
import (
"go.uber.org/zap"
)
func main() {
logger := zap.NewExample()
defer logger.Sync()
f := zap.Int("amount", 100)
logger.Debug("debug message", f)
logger.Info("info message", f)
logger.Error("error message", f)
logger.Warn("warn message", f)
}
印出結果如下。以json格式印出debug等級以上的log,僅含訊息資訊。
{"level":"debug","msg":"debug message","amount":100}
{"level":"info","msg":"info message","amount":100}
{"level":"error","msg":"error message","amount":100}
{"level":"warn","msg":"warn message","amount":100}
NewDevelopment
NewDevelopment
適用於開發環境。相當於NewDevelopmentConfig().Build()
。
main.go
package main
import (
"go.uber.org/zap"
)
func main() {
logger, _ := zap.NewDevelopment()
defer logger.Sync()
f := zap.Int("amount", 100)
logger.Debug("debug message", f)
logger.Info("info message", f)
logger.Error("error message", f)
logger.Warn("warn message", f)
}
印出結果如下,印出debug等級以上的log,包含時間及行數資訊。
2021-09-11T18:08:13.674+0800 DEBUG go-demo/main.go:14 debug message {"amount": 100}
2021-09-11T18:08:13.675+0800 INFO go-demo/main.go:15 info message {"amount": 100}
2021-09-11T18:08:13.675+0800 ERROR go-demo/main.go:16 error message {"amount": 100}
main.main
/.../go-demo/main.go:16
runtime.main
/usr/local/Cellar/go/1.16.6/libexec/src/runtime/proc.go:225
2021-09-11T18:08:13.675+0800 WARN go-demo/main.go:17 warn message {"amount": 100}
main.main
/.../go-demo/main.go:17
runtime.main
/usr/local/Cellar/go/1.16.6/libexec/src/runtime/proc.go:225
NewProduction
NewProduction
適用於生產環境。相當於NewProductionConfig().Build()
。
main.go
package main
import (
"go.uber.org/zap"
)
func main() {
logger, _ := zap.NewProduction()
defer logger.Sync()
f := zap.Int("amount", 100)
logger.Debug("debug message", f)
logger.Info("info message", f)
logger.Error("error message", f)
logger.Warn("warn message", f)
}
印出結果如下。以json格式印出info含以上等級的log,包含執行時間毫秒及行數資訊。
{"level":"info","ts":1631354950.341059,"caller":"go-demo/main.go:15","msg":"info message","amount":100}
{"level":"error","ts":1631354950.3411882,"caller":"go-demo/main.go:16","msg":"error message","amount":100,"stacktrace":"main.main\n\t/.../go-demo/main.go:16\nruntime.main\n\t/usr/local/Cellar/go/1.16.6/libexec/src/runtime/proc.go:225"}
{"level":"warn","ts":1631354950.341249,"caller":"go-demo/main.go:17","msg":"warn message","amount":100}
如要更細微的自訂log訊息,可利用zap.Config
來配置。
沒有留言:
張貼留言