使用Lumberjack进行日志切割归档
生活随笔
收集整理的這篇文章主要介紹了
使用Lumberjack进行日志切割归档
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用Lumberjack進行日志切割歸檔
文章目錄
- 使用Lumberjack進行日志切割歸檔
- 安裝
- zap logger中加入Lumberjack
- 測試所有功能
上述程序中唯一缺少的就是日志切割歸檔功能。
但是Zap庫本身不支持切割歸檔日志文件。
為了添加日志切割歸檔功能,我們將使用第三方庫Lumberjack來實現。
安裝
執行下面的命令安裝Lumberjack
go get github.com/natefinch/lumberjackzap logger中加入Lumberjack
要在zap中加入Lumberjack支持,我們需要修改WriteSyncer代碼。我們將按照下面的代碼修改getLogWriter()函數:
func getLogWriter() zapcore.WriteSyncer {lumberJackLogger := &lumberjack.Logger{Filename: "./test.log",MaxSize: 10,MaxBackups: 5,MaxAge: 30,Compress: false,}return zapcore.AddSync(lumberJackLogger) }Lumberjack Logger采用以下屬性作為輸入:
- Filename: 日志文件的位置
- MaxSize:在進行切割之前,日志文件的最大大小(以MB為單位)
- MaxBackups:保留舊文件的最大個數
- MaxAges:保留舊文件的最大天數
- Compress:是否壓縮/歸檔舊文件
測試所有功能
最終,使用Zap/Lumberjack logger的完整示例代碼如下:
package mainimport ("github.com/natefinch/lumberjack""go.uber.org/zap""go.uber.org/zap/zapcore""net/http" )var sugarLogger *zap.SugaredLoggerfunc main() {InitLogger()defer sugarLogger.Sync()simpleHttpGet("www.google.com")simpleHttpGet("http://www.google.com") }func InitLogger() {writeSyncer := getLogWriter()encoder := getEncoder()core := zapcore.NewCore(encoder, writeSyncer, zapcore.DebugLevel)logger := zap.New(core, zap.AddCaller())sugarLogger = logger.Sugar() }func getEncoder() zapcore.Encoder {encoderConfig := zap.NewProductionEncoderConfig()encoderConfig.EncodeTime = zapcore.RFC3339TimeEncoderencoderConfig.EncodeLevel = zapcore.CapitalLevelEncoderreturn zapcore.NewConsoleEncoder(encoderConfig) }func getLogWriter() zapcore.WriteSyncer {lumberJackLogger := &lumberjack.Logger{Filename: "./test.log",MaxSize: 10,MaxBackups: 5,MaxAge: 30,Compress: false,}return zapcore.AddSync(lumberJackLogger) }func simpleHttpGet(url string) {sugarLogger.Debugf("Trying to hit GET request for %s", url)resp, err := http.Get(url)if err != nil {sugarLogger.Errorf("Error fetching URL %s : Error = %s", url, err)} else {sugarLogger.Infof("Success! statusCode = %s for URL %s", resp.Status, url)resp.Body.Close()} }執行上述代碼,下面的內容會輸出到文件——test.log中:
2022-03-24T23:38:57+08:00 DEBUG SugaredLogger/main.go:42 Trying to hit GET request for www.google.com 2022-03-24T23:38:57+08:00 ERROR SugaredLogger/main.go:45 Error fetching URL www.google.com : Error = Get "www.google.com": unsupported protocol scheme "" 2022-03-24T23:38:57+08:00 DEBUG SugaredLogger/main.go:42 Trying to hit GET request for http://www.google.com 2022-03-24T23:39:18+08:00 ERROR SugaredLogger/main.go:45 Error fetching URL http://www.google.com : Error = Get "http://www.google.com": dial tcp 108.160.162.102:80: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. 2022-03-24T23:48:14+08:00 DEBUG 10Lumberjack/main.go:48 Trying to hit GET request for www.google.com 2022-03-24T23:48:14+08:00 ERROR 10Lumberjack/main.go:51 Error fetching URL www.google.com : Error = Get "www.google.com": unsupported protocol scheme "" 2022-03-24T23:48:14+08:00 DEBUG 10Lumberjack/main.go:48 Trying to hit GET request for http://www.google.com 2022-03-24T23:48:35+08:00 ERROR 10Lumberjack/main.go:51 Error fetching URL http://www.google.com : Error = Get "http://www.google.com": dial tcp 173.252.108.21:80: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.同時,可以在main函數中循環記錄日志,測試日志文件是否會自動切割和歸檔(日志文件每1MB會切割并且在當前目錄下最多保存5個備份)。
承接上文:
使用Uber-go Zap日志庫
參考資料:
https://www.liwenzhou.com/posts/Go/zap/
總結
以上是生活随笔為你收集整理的使用Lumberjack进行日志切割归档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【英语做题】英语“八股文“学习
- 下一篇: 《般若波罗蜜多心经》白话文翻译版本