Go實(shí)現(xiàn)整合Logrus實(shí)現(xiàn)日志打印
更新時(shí)間:2022年07月04日 10:04:57 作者:??BarryYan????
這篇文章主要介紹了Go實(shí)現(xiàn)整合Logrus實(shí)現(xiàn)日志打印,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
Github:github.com/sirupsen/lo…
1 初步使用
package main
import (
? "context"
? "github.com/sirupsen/logrus"
)
?
func main() {
? method0()
}
func method0() {
? logger:= logrus.New()
? logger.Warning("This is a first log.")
? ctx := context.WithValue(context.Background(),"key","value")
? logger.Warning(ctx,"This is a second log.")
}2 增加標(biāo)簽WithFields
package main?
import (
? "context"
? "github.com/sirupsen/logrus"
)
func main() {
? method1()
}
func method1() {
? log.WithFields(log.Fields{
? ? ?"fieldKey": "fieldValue",
? }).Warning("This is a first field log.")
?
? log.WithFields(log.Fields{
? ? ?"fieldKey": "fieldValue",
? ? ?"fieldKey2": "fieldValue2",
? }).Warning("This is a second field log.")
}3 配置常見參數(shù)
package main
import (
? "context"
? "github.com/sirupsen/logrus"
? log "github.com/sirupsen/logrus"
? "os"
)
?func main() {
? method2()
}
func init() {
? // 日志作為JSON而不是默認(rèn)的ASCII格式器.
? log.SetFormatter(&log.JSONFormatter{})
?
? // 輸出到標(biāo)準(zhǔn)輸出,可以是任何io.Writer
? log.SetOutput(os.Stdout)
?
? // 只記錄xx級(jí)別或以上的日志
? log.SetLevel(log.TraceLevel)
}
func method2() {
? log.WithFields(log.Fields{
? ? ?"animal": "walrus",
? ? ?"size": ? 10,
? }).Info("A group of walrus emerges from the ocean")
?
? log.WithFields(log.Fields{
? ? ?"omg": ? ?true,
? ? ?"number": 122,
? }).Warn("The group's number increased tremendously!")
?
? log.WithFields(log.Fields{
? ? ?"omg": ? ?true,
? ? ?"number": 100,
? }).Fatal("The ice breaks!")
}Formatter一般分為兩種:
- &log.JSONFormatter{}
- &log.TextFormatter{}
日志級(jí)別一共七種:
- log.Trace()
- log.Debug()
- log.Info()
- log.Warn()
- log.Error()
- log.Fatal()
- log.Panic()
4 輸出日志到文件
package main
import (
"context"
"github.com/sirupsen/logrus"
"os"
)
func main() {
method4()
}
func method4() {
? var log = logrus.New()
? file ,err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666)
? if err == nil{
? ? ?log.Out = file
? }else{
? ? ?log.Info("Failed to log to file")
? }
?
? log.WithFields(logrus.Fields{
? ? ?"filename": "123.txt",
? }).Info("This is a file log")
}logrus.log文件的內(nèi)容:
time="2022-01-06T13:04:25+08:00" level=info msg="This is a file log" filename=123.txt\
5 利用Hooks將日志輸出到其他地方
import (
?log "github.com/sirupsen/logrus"
?"gopkg.in/gemnasium/logrus-airbrake-hook.v2" // the package is named "airbrake"
?logrus_syslog "github.com/sirupsen/logrus/hooks/syslog"
?"log/syslog"
)
func init() {
?// 使用氣閘掛鉤來報(bào)告錯(cuò)誤嚴(yán)重程度或以上的錯(cuò)誤一個(gè)異常追蹤。您可以創(chuàng)建自定義鉤子,請(qǐng)參見鉤子部分。
?log.AddHook(airbrake.NewHook(123, "xyz", "production"))
?
?hook, err := logrus_syslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
?if err != nil {
? ?log.Error("Unable to connect to local syslog daemon")
} else {
? ?log.AddHook(hook)
}
}只需要在AddHook是添加相應(yīng)的Hook就可以了
到此這篇關(guān)于Go實(shí)現(xiàn)整合Logrus實(shí)現(xiàn)日志打印的文章就介紹到這了,更多相關(guān)Go Logrus日志打印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang中調(diào)用deepseekr1的教程詳解
這篇文章主要為大家詳細(xì)介紹了Golang中調(diào)用deepseekr1的相關(guān)教程,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下2025-02-02

