简介
Logrus 是Go结构化日志记录器,与标准库log的API兼容
如何使用
import log "github.com/sirupsen/logrus"
上面代码添加log别名,便于后面使用
func main() {
defer func() {
if err := recover(); err != nil {
log.Error(err)
}
}()
log.Info("info log")
log.Debug("debug log")
log.Error("error log")
log.Panic("panic log") // after execute panic function
}
执行上面代码,可以看到Debug
日志未打印到屏幕上,这是因为logrus
默认打印的日志级别是Info
,该级别以下的日志不会打印,可以通过logrus.SetLevel()
设置日志级别,下面👇🏻是logrus日志级别源码片段,可以参考进行设置。
// 设置DebugLevel可打印Debug及以上日志
// 设置ErrorLevel可打印Error及以上日志
// 以此类推
log.SetLevel(log.DebugLevel)
// 设置Text格式输出(默认)
log.SetFormatter(&log.TextFormatter{
ForceColors: false, // 是否跳过TTY检查
DisableColors: false, // 是否打印颜色
FullTimestamp: true, // 是否显示完整时间
TimestampFormat: "2006-01-02 15:04:05", // 日期格式化
})
// 设置JSON格式输出
log.SetFormatter(&log.JSONFormatter{
TimestampFormat: "2006-01-02 15:04:05", // 时间字段格式化
DisableTimestamp: false, // 是否关闭时间字段
DisableHTMLEscape: true, // 是否禁用html转义(一般禁用, 提高输出效率, 除非日志需要在html中展示)
DataKey: "", //
FieldMap: log.FieldMap{"time": "@time"}, // 自定义默认字段名称
CallerPrettyfier: nil, // 设置修改字段内容的函数
PrettyPrint: true, // 是否缩进展示JSON
})
// 看下效果
log.Info("<html></html>")
log.SetReportCaller(true)
// 添加一个
log.WithField("app_name", "tmp").Info("info log")
// 添加多个
log.WithFields(log.Fields{
"app_name": "tmp",
"request_id": "00000",
}).Info("test log")
log := logrus.New()
通过创建Logger
实例并将它设置为全局变量,可以在封装框架时复用它
�
高级用法
Hook
可以通过设置钩子的方式来实现一些个性化配置,下面代码是使用官方提供的两个钩子示例
TODO