Go实现整合 Logrus 输出json格式日志
学习与交流:Go语言技术微信群
![图片](https://mmbiz.qpic.cn/mmbiz_png/HvRgjyfjzzbS0SgWK0yOicRmkTcHib69Uia3t6QY1wxRudKTQbdLKPBzvWZSBOkXNq8pAc7Jr4LWDiaibqicHQUib6Yww/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1)
商务合作加微信:LetsFeng
goland 全家桶激活码,支持所有版本,支持所有系统
链接:http://web.52shizhan.cn/activity/s2abxc
提取码:GJF9B1DK
现在就开始你的Go语言学习之旅吧!人生苦短,let’s Go.
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 增加标签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 配置常见参数
package main
import (
"context"
"github.com/sirupsen/logrus"
log "github.com/sirupsen/logrus"
"os"
)
func main() {
method2()
}
func init() {
// 日志作为JSON而不是默认的ASCII格式器.
log.SetFormatter(&log.JSONFormatter{})
// 输出到标准输出,可以是任何io.Writer
log.SetOutput(os.Stdout)
// 只记录xx级别或以上的日志
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{}
日志级别一共七种:
-
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文件的内容:
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() {
// 使用气闸挂钩来报告错误严重程度或以上的错误一个异常追踪。您可以创建自定义钩子,请参见钩子部分。
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是添加相应的Hook就可以了
到此这篇关于Go实现整合Logrus实现日志打印的文章就介绍到这了
文章首发:https://www.jb51.net/article/253981.htm
更多相关Go语言的技术文章或视频教程,请关注本公众号获取并查看,感谢你的支持与信任!