Go整合Logrus实现日志打印

网友投稿 291 2022-11-16

Go整合Logrus实现日志打印

Github:初步使用

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() { // 日志作为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 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" // 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就可以了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:什么是光口和电口_光口和电口的区别
下一篇:用于功能测试系统设计的系统元件方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~