GO語(yǔ)言實(shí)現(xiàn)日志切割的示例詳解
準(zhǔn)備工作
日志記錄對(duì)程序排查問題比較關(guān)鍵,記錄下GO中日志選擇,從以下出發(fā)點(diǎn)考慮:
- 日志文件能自動(dòng)切割,以免過大
- 能記錄從哪個(gè)文件哪行代碼調(diào)用的,方便排查問題
- 配置簡(jiǎn)單明了
- 庫(kù)文件使用人數(shù)較多,穩(wěn)定
經(jīng)過一段時(shí)間摸索,最終選擇了Logrus和lumberjack兩個(gè)庫(kù),使用人數(shù)都比較多。
安裝兩個(gè)庫(kù)
go get gopkg.in/natefinch/lumberjack.v2 go get github.com/sirupsen/logrus
代碼
實(shí)際中一行配置就可以完成,后續(xù)只用調(diào)用logrus.Debug、logrus.Info同標(biāo)準(zhǔn)庫(kù)一樣只用log改為logrus十分簡(jiǎn)單明了
logrus.SetOutput(io.MultiWriter(os.Stdout, &lumberjack.Logger{ Filename: "go-log.log", MaxBackups: 10, MaxSize: 20, }))
整體代碼如下,基本能滿足實(shí)際使用需求
個(gè)別需求調(diào)整可以參考這兩個(gè)文檔
package main import ( "io" "os" "time" "github.com/sirupsen/logrus" "gopkg.in/natefinch/lumberjack.v2" ) func main() { // 同時(shí)輸出到終端和文件 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, }) */ // 這個(gè)在日志中記錄代碼位置,十分有用 logrus.SetReportCaller(true) // 設(shè)置輸出等級(jí),按實(shí)際需求設(shè)置,可以忽略 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)
可以自動(dòng)在日志當(dāng)中記錄代碼調(diào)用位置,設(shè)置為false時(shí)候不開啟
到此這篇關(guān)于GO語(yǔ)言實(shí)現(xiàn)日志切割的示例詳解的文章就介紹到這了,更多相關(guān)GO日志切割內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang執(zhí)行命令獲取執(zhí)行結(jié)果狀態(tài)(推薦)
這篇文章主要介紹了golang執(zhí)行命令獲取執(zhí)行結(jié)果狀態(tài)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-11-11Golang實(shí)現(xiàn)自己的Redis(有序集合跳表)實(shí)例探究
這篇文章主要為大家介紹了Golang實(shí)現(xiàn)自己的Redis(有序集合跳表)實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Go語(yǔ)言metrics應(yīng)用監(jiān)控指標(biāo)基本使用說(shuō)明
這篇文章主要為大家介紹了Go語(yǔ)言metrics應(yīng)用監(jiān)控指標(biāo)的基本使用說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02go語(yǔ)言題解LeetCode1275找出井字棋的獲勝者示例
這篇文章主要為大家介紹了go語(yǔ)言題解LeetCode1275找出井字棋的獲勝者示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Golang使用Gin框架實(shí)現(xiàn)HTTP上傳文件過程介紹
由于需求中有文件上傳這一個(gè)需求,在這里我們就學(xué)習(xí)一下go語(yǔ)言如何上傳文件。本文主要通過表單的方式進(jìn)行文件上傳操作,本文實(shí)例為大家分享了Go實(shí)現(xiàn)文件上傳操作的具體代碼,供大家參考,具體內(nèi)容如下2023-04-04Go條件控制語(yǔ)句詳解(if-else、switch和select)
條件語(yǔ)句用于檢查一個(gè)條件是否為真,并根據(jù)條件的真假來(lái)決定是否執(zhí)行相應(yīng)的代碼,下面這篇文章主要給大家介紹了關(guān)于Go條件控制語(yǔ)句(if-else、switch和select)的相關(guān)資料,需要的朋友可以參考下2024-03-03