更多文章:https://oscome.cn/
引言
作为 github 上 golang star 最多的库,logrus 值得练习。
我的项目地址
我的项目地址:https://github.com/sirupsen/l… [star:21.4k]
应用场景
- 日志打印、格式化日志
装置
go get github.com/sirupsen/logrus
罕用办法
- Info 打印 info 级别的日志
- SetFormatter 设置日志格局
- SetLevel 设置打印的级别,此级别以上显示
- SetReportCaller 设置是否将调用办法作为字段蕴含在打印的日志内。
例子
package main
import "github.com/sirupsen/logrus"
func main() {log := logrus.New()
log.Info("------TextFormatter--------") // 默认格局
log.SetFormatter(&logrus.TextFormatter{
TimestampFormat: "2006-01-02 15:04:05", // 定义日期工夫格局
FullTimestamp: true,
DisableColors: true,
})
log.Info("oscome info log")
log.Debug("oscome debug log")
log.WithFields(logrus.Fields{"name": "test",}).Infof("to do %v", "log")
log.Info("------JSONFormatter--------")
formatter := &logrus.JSONFormatter{
TimestampFormat: "2006-01-02 15:04:05", // 定义日期工夫格局
DataKey: "test", // key
FieldMap: logrus.FieldMap{
logrus.FieldKeyTime: "timestamp",
logrus.FieldKeyLevel: "level",
logrus.FieldKeyMsg: "message",
logrus.FieldKeyFunc: "caller",
},
}
log.SetFormatter(formatter)
log.SetReportCaller(true) // 打印 log 产生的地位
log.SetLevel(logrus.InfoLevel) // debug
logrus.Info("oscome info log")
log.Debug("oscome debug log")
log.WithFields(logrus.Fields{"name": "test",}).Infof("to do %v", "log")
}
实例代码
https://github.com/oscome/god…
tips
- 倡议全局对立格局,如果须要收集倡议设置为 json 格局,不便收集到 ES 等日志零碎
- 能够配合 file-rotatelogs 或者 shell 去宰割