简介
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
