简介
日志是基于开源组件github.com/sirupsen/logrus进行封装。
核心组件目录
github.com/qit-team/snow-core/log/logger
日志输出方式
目前支持输出方式有两种:文件和标准输出。通过配置文件的参数进行控制:
[Log]
Handler = "file" # file表示文件输出 stdout表示标准输出
日志输出目录
当输出方式为文件,可通过配置文件的参数控制:
[Log]
Dir = "/go/src/github.com/qit-team/snow/logs"
日志输出文件
按照天级别滚动存储,文件名格式为snow.YYYYMMDD.log
日志输出等级
不设置默认info等级
[Log]
Level = "info" # 支持trace|debug|info|warn|error|fatal|panic
日志输出格式
日志默认以JSON格式输出,目前也不提供外配置设置功能,因为结构化数据各利于后续日志收集分析与监控。
日志字段说明
- time 时间
- host 主机
- level 日志等级
- type 业务场景 比如order.pay
- msg 日志消息
- trace_id 追踪ID,gin.Context的请求头部带有X-Trace-Id
- domain 请求域名,gin.Context特有
- cip 宿主机IP,gin.Context特有
- sip 请求来源IP,gin.Context特有
- 自定义字段 如果msg…interface{}中有实现了*logger.withField的数据结构,则会读取此结构的字段和字段值,但不能覆盖已有的字段。
日志以JSON格式输出,示例如下:
{"time":"2019-07-01T20:06:25+08:00","level":"info","type":"order.pay","host":"MacBook.local","cip":"127.0.0.1","domain":"127.0.0.1:8000","msg":"ni shi shui","sip":"127.0.0.1:51260","trace_id":"xxxx"}
日志方法
目前针对业务只提供了以下的调用方法:
logger.Trace(c context.Context, logType string, msg ...interface{})
logger.Debug(c context.Context, logType string, msg ...interface{})
logger.Info(c context.Context, logType string, msg ...interface{})
logger.Warn(c context.Context, logType string, msg ...interface{})
logger.Error(c context.Context, logType string, msg ...interface{})
logger.Fatal(c context.Context, logType string, msg ...interface{})
logger.Panic(c context.Context, logType string, msg ...interface{})
- context.Context 可以传入任何实现了context.Context接口的数据类型(gin.Context实现了),如果不需要,可以传入nil。
- logType 日志类型,主要用于区分业务
- msg …interface 可以传入任意类型的数据,
组件原生Logger
## 返回*logrus.Logger,实现了通用的logger接口,可以进行非侵入的注入
logger.GetLogger()