zap和lumberjack的使用和封裝


項目打算寫日志,沒有選好合適的日志庫,所以研究了下兩個日志庫。

 

lumberjack介紹

這個庫我通讀了源碼,因為代碼比較少。

它的主要功能是對文件卷動和壓縮進行了抽象。

lumberjack 的主要格式

```
type Logger struct {
	//文件名
	Filename string `json:"filename" yaml:"filename"`
	//單個文件最大尺寸,默認單位M
	MaxSize int `json:"maxsize" yaml:"maxsize"`
	//日志最大時間
	MaxAge int `json:"maxage" yaml:"maxage"`
	//備份日志的數量
	MaxBackups int `json:"maxbackups" yaml:"maxbackups"`
	//日志的本地時間
	LocalTime bool `json:"localtime" yaml:"localtime"`
	//是否壓縮
	Compress bool `json:"compress" yaml:"compress"`
	//文件尺寸
	size int64
	//文件句柄
	file *os.File
	//鎖
	mu   sync.Mutex
	//chan
	millCh    chan bool
	//同步一次變量
	startMill sync.Once
}
```

 

zap介紹

zap是uber開源的日志庫,性能超級贊。源碼太長,沒有全部讀完。

但可以簡單使用。

結合兩者的特性進行封裝

 

flg

對zlog和lumberjack進行封裝。希望能夠結合兩者的優點

toml config 基本的配置

```

[jackcfg]
filename="test.log"
maxsize=500
maxage=7
maxbackups=1000
localtime=true
compress=false


[zapcfgs]
[zapcfgs.1]
level="info"
isdev=true
logmod=3
servername="test"

```

使用

 

```

       l := &flg.Logger{}
	err := l.LoadFromFile("test.toml")
	if err != nil{
		panic("get file faild")
	}
	ltest,err := l.GetLogByKey("test")
	ltest.Info("a test")

	ltest.Info("abc",zap.Int("int",11))

```

 

https://github.com/beckbikang/flg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM