GO語言實(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語言實(shí)現(xiàn)日志切割的示例詳解的文章就介紹到這了,更多相關(guān)GO日志切割內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang?流水線設(shè)計(jì)模式實(shí)踐示例詳解
這篇文章主要為大家介紹了Golang?流水線設(shè)計(jì)模式實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
go內(nèi)存緩存BigCache之Entry封裝源碼閱讀
這篇文章主要介紹了go內(nèi)存緩存BigCache之Entry封裝源碼閱讀2023-09-09
淺析Go語言如何在select語句中實(shí)現(xiàn)優(yōu)先級(jí)
這篇文章主要為大家詳細(xì)介紹了Go語言如何在select語句中實(shí)現(xiàn)優(yōu)先級(jí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
Go語言將string解析為time.Time時(shí)兩種常見報(bào)錯(cuò)
本文主要介紹了Go語言將string解析為time.Time時(shí)兩種常見報(bào)錯(cuò),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
golang實(shí)現(xiàn)基于channel的通用連接池詳解
這篇文章主要給大家介紹了關(guān)于golang實(shí)現(xiàn)基于channel的通用連接池的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02
golang channel讀取數(shù)據(jù)的幾種情況
本文主要介紹了golang channel讀取數(shù)據(jù)的幾種情況,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02

