您现在的位置是:网站首页> 编程资料编程资料
Go实现整合Logrus实现日志打印_Golang_
2023-05-26
376人已围观
简介 Go实现整合Logrus实现日志打印_Golang_
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而不是默认的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实现日志打印的文章就介绍到这了,更多相关Go Logrus日志打印内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- go-micro开发RPC服务以及运行原理介绍_Golang_
- 一篇文章搞懂Go语言中的Context_Golang_
- 一篇文章学会GO语言中的变量_Golang_
- Golang实现快速求幂的方法详解_Golang_
- 详解golang执行Linux shell命令完整场景下的使用方法_Golang_
- 详解Go语言中for循环,break和continue的使用_Golang_
- GoFrame实现顺序性校验示例详解_Golang_
- 优雅使用GoFrame共享变量Context示例详解_Golang_
- Go语言学习之Switch语句的使用_Golang_
- Golang中slice删除元素的性能对比_Golang_
