logrus 是 golang 一款非常優(yōu)秀的日志框架, 其優(yōu)點非常明顯:
- 優(yōu)雅的代碼框架設(shè)計,
- 使用簡單
- 組件化的開發(fā)思路
- 靈活的輸出方式
目前 golang 日志庫的大眾選擇主要集中在: logrus, zap, zerolog. zap 和 zerolog 的性能都是優(yōu)秀的, 但是從用法習(xí)慣上我更傾向于 zap.
簡單介紹 Zap 的使用
Zap 提供三種不同方式的輸出(以 Info為 例)
log.Info("hello zap") // {"level":"info","ts":1576423173.016333,"caller":"test_zap/main.go:28","msg":"hello zap"} log.Infof("hello %s", "zap") // {"level":"info","ts":1576423203.056074,"caller":"test_zap/main.go:29","msg":"hello zap"} log.Infow("hello zap", "field1", "value1") //{"level":"info","ts":1576423203.0560799,"caller":"test_zap/main.go:30","msg":"hello zap","field1":"value1"}
如果我們對 logrus 的 key-value 理論比較在意的話, 使用 zap infow 可以完美解決
Zap 使用起來不便利的地方
- Zap 使用上不能像 logrus 那樣開箱即用
- 使用者需要自己去組裝相關(guān)函數(shù)
- Zap 同樣不提供日志切割的功能, 但是想添加上這個功能沒有 logrus 那樣便利
基于這些問題, 我封裝了一套開箱即用的日志組件: https://github.com/georgehao/log
打造 Zap 開箱即用日志組件
提供的功能:
- 像 logrus 一樣, 全局的 Debug, Info ... 函數(shù)
- 日志分割功能. 默認(rèn)文件大小1024M,自動壓縮, 最大有3個文件備份,備份保存時間7天, 不會打印日志被調(diào)用的文文件名和位置
- 日志默認(rèn)會被分成五類文件:xxx.log.DEBUG,xxx.log.INFO, xxx.log.WARN, xxx.log.ERROR, xxx.log.Request. error, panic. fatal 都會打印在xxx.log.ERROR. xxx.log.Request輸出 request log 的地方(如果有需要的話)
框架圖
使用方法
go get github.com/georgehao/log
例子
package main import "github.com/georgehao/log" func main() { // init log // set absolute path, and level // set output level // don't need request log // set log's caller using logOption log.Init("./test.log", log.DebugLevel, false, log.SetCaller(true)) log.Info("hello george log") // flush log.Sync() //output: {"level":"info","ts":"2019-12-16T10:37:11.364+0800","caller":"example/example.go:12","msg":"hello george log"} }
參考
掃碼二維碼 獲取免費視頻學(xué)習(xí)資料
- 本文固定鏈接: http://www.wangchenghua.com/post/7242/
- 轉(zhuǎn)載請注明:轉(zhuǎn)載必須在正文中標(biāo)注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料
查 看2022高級編程視頻教程免費獲取