Go整合Logrus实现日志打印
原创
文章标签 golang 开发语言 后端 日志 github 文章分类 Hadoop 大数据
©著作权归作者所有:来自51CTO博客作者海风极客的原创作品,请联系作者获取转载授权,否则将追究法律责任
Github:https://github.com/sirupsen/logrus
1 初步使用
package mainimport ( "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 mainimport ( "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 mainimport ( "context" "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus" "os")func main() { method2()}func init() { log.SetFormatter(&log.JSONFormatter{}) log.SetOutput(os.Stdout) 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 mainimport ( "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" 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就可以了
- 赞
- 收藏
- 评论
- *举报
下一篇:玩转gRPC—深入概念与原理
Original: https://blog.51cto.com/u_15654567/5437532
Author: BarryYan_
Title: Go整合Logrus实现日志打印
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516832/
转载文章受原作者版权保护。转载请注明原作者出处!