Golang如何自定義logrus日志保存為日志文件
背景
為了方便查看日志,項(xiàng)目中需要把日志保存到對應(yīng)的日志文件中,所以需要當(dāng)前的配置,以使得日志能夠保存到對應(yīng)的日志文件中。
代碼
import ( "github.com/orandin/lumberjackrus" "github.com/sirupsen/logrus" ) func init() { logrus.AddHook(NewRotateHook()) } func NewRotateHook() logrus.Hook { hook, _ := lumberjackrus.NewHook( &lumberjackrus.LogFile{ // 通用日志配置 Filename: "output.log", MaxSize: 100, MaxBackups: 1, MaxAge: 1, Compress: false, LocalTime: false, }, logrus.InfoLevel, &logrus.TextFormatter{DisableColors: true}, &lumberjackrus.LogFileOpts{ // 針對不同日志級別的配置 logrus.TraceLevel: &lumberjackrus.LogFile{ Filename: "trace.log", MaxSize: 100, MaxBackups: 1, MaxAge: 1, Compress: false, LocalTime: false, }, logrus.DebugLevel: &lumberjackrus.LogFile{ Filename: "debug.log", MaxSize: 100, MaxBackups: 1, MaxAge: 1, Compress: false, LocalTime: false, }, logrus.InfoLevel: &lumberjackrus.LogFile{ Filename: "info.log", MaxSize: 100, MaxBackups: 1, MaxAge: 1, Compress: false, LocalTime: false, }, logrus.ErrorLevel: &lumberjackrus.LogFile{ Filename: "error.log", MaxSize: 10, MaxBackups: 10, MaxAge: 10, Compress: false, LocalTime: false, }, logrus.FatalLevel: &lumberjackrus.LogFile{ Filename: "fatal.log", MaxSize: 10, MaxBackups: 10, MaxAge: 10, Compress: false, LocalTime: false, }, }, ) return hook }
附:logrus特性
logrus具有以下特性:
- 完全兼容golang標(biāo)準(zhǔn)庫日志模塊。logrus擁有六種日志級別:debug、info、warn、error、fatal和panic,這是golang標(biāo)準(zhǔn)庫日志模塊的API的超集。如果你的項(xiàng)目使用標(biāo)準(zhǔn)庫日志模塊,完全可以用最低的代價(jià)遷移到logrus上。
- 可擴(kuò)展的Hook機(jī)制。允許使用者通過hook方式,將日志分發(fā)到任意地方,如本地文件系統(tǒng)、標(biāo)準(zhǔn)輸出、logstash、elasticsearch或者mq等,或者通過hook定義日志內(nèi)容和格式等。
- 可選的日志輸出格式。logrus內(nèi)置了兩種日志格式,JSONFormatter和TextFormatter。如果這兩個(gè)格式不滿足需求,可以自己動(dòng)手實(shí)現(xiàn)接口Formatter,來定義自己的日志格式。
- Field機(jī)制。logrus鼓勵(lì)通過Field機(jī)制進(jìn)行精細(xì)化、結(jié)構(gòu)化的日志記錄,而不是通過冗長的消息來記錄日志。
- logrus是一個(gè)可插拔的、結(jié)構(gòu)化的日志框架。
總結(jié)
到此這篇關(guān)于Golang如何自定義logrus日志保存為日志文件的文章就介紹到這了,更多相關(guān)Golang自定義logrus日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go 自動(dòng)升級依賴版本的幾種方法實(shí)現(xiàn)
Go語言使用GoModules進(jìn)行依賴管理,可以通過多種方式自動(dòng)升級依賴,本文就來介紹Go 自動(dòng)升級依賴版本的7種方法,感興趣的可以了解一下2025-03-03一文帶你吃透Golang中net/http標(biāo)準(zhǔn)庫服務(wù)端
這篇文章將從服務(wù)端(Server)作為切入點(diǎn)和大家分享一下Go語言net/http標(biāo)準(zhǔn)庫的實(shí)現(xiàn)邏輯,進(jìn)而一步步分析http標(biāo)準(zhǔn)庫內(nèi)部是如何運(yùn)作的,感興趣的可以了解下2024-03-03Go語言如何實(shí)現(xiàn)將[][]byte轉(zhuǎn)為io.Reader
本文主要介紹了如何在Go語言中實(shí)現(xiàn)將[][]byte轉(zhuǎn)換為io.Reader,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2025-02-02利用go語言實(shí)現(xiàn)查找二叉樹中的最大寬度
這篇文章主要介紹了利用go語言實(shí)現(xiàn)查找二叉樹中的最大寬度,文章圍繞主題展開詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05