Go整合Logrus实现日志打印

Go整合Logrus实现日志打印

原创

海风极客博主文章分类:布道Go语言 ©著作权

文章标签 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就可以了

  • 收藏
  • 评论
  • *举报

上一篇:玩转MongoDB—搭建MongoDB集群

下一篇:玩转gRPC—深入概念与原理

Original: https://blog.51cto.com/u_15654567/5437532
Author: BarryYan_
Title: Go整合Logrus实现日志打印

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516832/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球