go日志庫(kù)中的logrus
一、安裝
go get github.com/sirupsen/logrus
二、使用
1、當(dāng)做標(biāo)準(zhǔn)庫(kù)使用
logrus實(shí)現(xiàn)了標(biāo)準(zhǔn)庫(kù)log的方法,可以用標(biāo)準(zhǔn)庫(kù)的方法用于logrus,例如
import (
log "github.com/sirupsen/logrus"
)
log.Println("標(biāo)準(zhǔn)log")2、使用帶級(jí)別日志
import (
log "github.com/sirupsen/logrus"
)
func main() {
log.Info("info")
}具體有七個(gè)類(lèi)別Trace、Debug、Info、Warning、Error、Fatal和Panic。這里需要注意Fatal和Panic類(lèi)型的日志會(huì)中斷程序的運(yùn)行。
3、輸出日志時(shí)可以附帶參數(shù)
log.WithFields(log.Fields{
"flag": true,
"name": "zhangsan",
}).Fatal("fatal")在運(yùn)行中出現(xiàn)錯(cuò)誤時(shí),把當(dāng)時(shí)的參數(shù)記錄下來(lái)更容易分析,而不是把各個(gè)參數(shù)組織成句子拼接起來(lái)。
4、日志輸出的格式
log.SetFormatter(&log.JSONFormatter{})
log.SetFormatter(&log.TextFormatter{
ForceColors: true,
FullTimestamp: true,
})
log.SetOutput(os.Stdout)
log.SetLevel(log.WarnLevel)可以輸出JSON,文本格式,對(duì)具體的格式還可以設(shè)置顏色、時(shí)間串等信息,可以設(shè)置輸出位置,輸出日志的級(jí)別。
5、輸出到多個(gè)位置
如果同一份日志內(nèi)容想存儲(chǔ)到不同位置,可以創(chuàng)建不同的log實(shí)例,對(duì)每個(gè)實(shí)例進(jìn)行不同設(shè)置
var log = logrus.New()
6、輸出日志到文件
file, err := os.OpenFile("logs/cus.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err == nil {
log.Out = file
} else {
log.Info("Failed to log to file, using default stderr")
}7、分割日志文件
如果每天的日志都放到一個(gè)文件中,會(huì)越來(lái)越大,按照時(shí)間進(jìn)行分割會(huì)比較好。下面的內(nèi)容放到初始化的時(shí)候執(zhí)行。
這里面需要引入第三方庫(kù)
"github.com/lestrrat-go/file-rotatelogs"
"github.com/rifflock/lfshook"
writer, err := rotatelogs.New(
"文件名"+".%Y%m%d%H%M", // 分割后的文件名稱(chēng)
rotatelogs.WithLinkName("文件名"), // 生成軟鏈,指向最新日志文件
rotatelogs.WithMaxAge(time.Hour*24*365), // 設(shè)置最大保存時(shí)間
rotatelogs.WithRotationTime(time.Hour*24), // 設(shè)置日志切割時(shí)間間隔
)
if err != nil {
log.Errorf("config local file system logger error", err)
}
lfHook := lfshook.NewHook(lfshook.WriterMap{
logrus.DebugLevel: writer, // 為不同級(jí)別設(shè)置不同的輸出目的
logrus.InfoLevel: writer,
logrus.WarnLevel: writer,
logrus.ErrorLevel: writer,
logrus.FatalLevel: writer,
logrus.PanicLevel: writer,
}, &logrus.TextFormatter{DisableColors: true})
//最后加入hook
log.AddHook(lfHook)到此這篇關(guān)于go日志庫(kù)中的logrus的文章就介紹到這了,更多相關(guān)go日志庫(kù)logrus內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語(yǔ)言入門(mén)Go?Web?Fiber框架快速了解
這篇文章主要為大家介紹了Go語(yǔ)言入門(mén)Go?Web?Fiber框架的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Go語(yǔ)言實(shí)現(xiàn)的樹(shù)形結(jié)構(gòu)數(shù)據(jù)比較算法實(shí)例
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)的樹(shù)形結(jié)構(gòu)數(shù)據(jù)比較算法,實(shí)例分析了樹(shù)形結(jié)構(gòu)數(shù)據(jù)比較算法的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02
深入分析Golang Server源碼實(shí)現(xiàn)過(guò)程
這篇文章深入介紹了Golang Server源碼實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-02-02
詳解Go語(yǔ)言Sync.Pool為何不加鎖也能夠?qū)崿F(xiàn)線(xiàn)程安全
在這篇文章中,我們將剖析sync.Pool內(nèi)部實(shí)現(xiàn)中,介紹了sync.Pool比較巧妙的內(nèi)部設(shè)計(jì)思路以及其實(shí)現(xiàn)方式。在這個(gè)過(guò)程中,也間接介紹了為何不加鎖也能夠?qū)崿F(xiàn)線(xiàn)程安全,感興趣的可以學(xué)習(xí)一下2023-04-04
基于Go Int轉(zhuǎn)string幾種方式性能測(cè)試
這篇文章主要介紹了Go Int轉(zhuǎn)string幾種方式測(cè)試,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04

