go日志庫中的logrus
一、安裝
go get github.com/sirupsen/logrus
二、使用
1、當做標準庫使用
logrus實現(xiàn)了標準庫log的方法,可以用標準庫的方法用于logrus,例如
import (
log "github.com/sirupsen/logrus"
)
log.Println("標準log")2、使用帶級別日志
import (
log "github.com/sirupsen/logrus"
)
func main() {
log.Info("info")
}具體有七個類別Trace、Debug、Info、Warning、Error、Fatal和Panic。這里需要注意Fatal和Panic類型的日志會中斷程序的運行。
3、輸出日志時可以附帶參數(shù)
log.WithFields(log.Fields{
"flag": true,
"name": "zhangsan",
}).Fatal("fatal")在運行中出現(xiàn)錯誤時,把當時的參數(shù)記錄下來更容易分析,而不是把各個參數(shù)組織成句子拼接起來。
4、日志輸出的格式
log.SetFormatter(&log.JSONFormatter{})
log.SetFormatter(&log.TextFormatter{
ForceColors: true,
FullTimestamp: true,
})
log.SetOutput(os.Stdout)
log.SetLevel(log.WarnLevel)可以輸出JSON,文本格式,對具體的格式還可以設置顏色、時間串等信息,可以設置輸出位置,輸出日志的級別。
5、輸出到多個位置
如果同一份日志內(nèi)容想存儲到不同位置,可以創(chuàng)建不同的log實例,對每個實例進行不同設置
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、分割日志文件
如果每天的日志都放到一個文件中,會越來越大,按照時間進行分割會比較好。下面的內(nèi)容放到初始化的時候執(zhí)行。
這里面需要引入第三方庫
"github.com/lestrrat-go/file-rotatelogs"
"github.com/rifflock/lfshook"
writer, err := rotatelogs.New(
"文件名"+".%Y%m%d%H%M", // 分割后的文件名稱
rotatelogs.WithLinkName("文件名"), // 生成軟鏈,指向最新日志文件
rotatelogs.WithMaxAge(time.Hour*24*365), // 設置最大保存時間
rotatelogs.WithRotationTime(time.Hour*24), // 設置日志切割時間間隔
)
if err != nil {
log.Errorf("config local file system logger error", err)
}
lfHook := lfshook.NewHook(lfshook.WriterMap{
logrus.DebugLevel: writer, // 為不同級別設置不同的輸出目的
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日志庫中的logrus的文章就介紹到這了,更多相關(guān)go日志庫logrus內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言常見數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)詳解
這篇文章主要為大家學習介紹了Go語言中的常見數(shù)據(jù)結(jié)構(gòu)(channal、slice和map)的實現(xiàn),文中的示例代碼簡潔易懂,需要的可以參考一下2023-07-07
go gin+token(JWT)驗證實現(xiàn)登陸驗證
本文主要介紹了go gin+token(JWT)驗證實現(xiàn)登陸驗證,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12

