GO語言實現(xiàn)日志切割的示例詳解
準備工作
日志記錄對程序排查問題比較關鍵,記錄下GO中日志選擇,從以下出發(fā)點考慮:
- 日志文件能自動切割,以免過大
- 能記錄從哪個文件哪行代碼調用的,方便排查問題
- 配置簡單明了
- 庫文件使用人數(shù)較多,穩(wěn)定
經過一段時間摸索,最終選擇了Logrus和lumberjack兩個庫,使用人數(shù)都比較多。
安裝兩個庫
go get gopkg.in/natefinch/lumberjack.v2 go get github.com/sirupsen/logrus
代碼
實際中一行配置就可以完成,后續(xù)只用調用logrus.Debug、logrus.Info同標準庫一樣只用log改為logrus十分簡單明了
logrus.SetOutput(io.MultiWriter(os.Stdout, &lumberjack.Logger{
Filename: "go-log.log",
MaxBackups: 10,
MaxSize: 20,
}))整體代碼如下,基本能滿足實際使用需求
個別需求調整可以參考這兩個文檔
package main
import (
"io"
"os"
"time"
"github.com/sirupsen/logrus"
"gopkg.in/natefinch/lumberjack.v2"
)
func main() {
// 同時輸出到終端和文件
logrus.SetOutput(io.MultiWriter(os.Stdout, &lumberjack.Logger{
Filename: "go-log.log",
MaxBackups: 10,
MaxSize: 20,
}))
/*只輸出到文件的話只用以下寫法
logrus.SetOutput(&lumberjack.Logger{
Filename: "go-log.log",
MaxBackups: 10,
MaxSize: 20,
})
*/
// 這個在日志中記錄代碼位置,十分有用
logrus.SetReportCaller(true)
// 設置輸出等級,按實際需求設置,可以忽略
logrus.SetLevel(logrus.InfoLevel)
logrus.Debug("debug message")
logrus.Infof("info message at %s\n", time.Now().Format("2006-01-02 15:04:05"))
logrus.Error("error message")
}使用效果
logrus.SetReportCaller(true)可以自動在日志當中記錄代碼調用位置,設置為false時候不開啟

到此這篇關于GO語言實現(xiàn)日志切割的示例詳解的文章就介紹到這了,更多相關GO日志切割內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺析Go語言如何在select語句中實現(xiàn)優(yōu)先級
這篇文章主要為大家詳細介紹了Go語言如何在select語句中實現(xiàn)優(yōu)先級,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-03-03
Go語言將string解析為time.Time時兩種常見報錯
本文主要介紹了Go語言將string解析為time.Time時兩種常見報錯,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03
golang實現(xiàn)基于channel的通用連接池詳解
這篇文章主要給大家介紹了關于golang實現(xiàn)基于channel的通用連接池的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-02-02

