Go实现整合Logrus实现日志打印

2022-07-05 19:27:09

目录1初步使用2增加标签WithFields3配置常见参数4输出日志到文件5利用Hooks将日志输出到其他地方Github:github.com/sirupsen/lo1初步使用packa...

目录
1 初步使用
2 增加标签WithFields
3 配置常见参数
4 输出日志到文件
5 利用Hooks将日志输出到其他地方

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 增加标签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而不是默认的znumcxKbhcASCII格式器.
  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 利用http://www.cppcns.comHooks将日志输出到其他地方

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实现日志打印的文章就介绍到这了,更多相关Go Logrus日志打印内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!