简介

日志是基于开源组件github.com/sirupsen/logrus进行封装。

核心组件目录

github.com/qit-team/snow-core/log/logger

日志输出方式

目前支持输出方式有两种:文件和标准输出。通过配置文件的参数进行控制:

  1. [Log]
  2. Handler = "file" # file表示文件输出 stdout表示标准输出

日志输出目录

当输出方式为文件,可通过配置文件的参数控制:

  1. [Log]
  2. Dir = "/go/src/github.com/qit-team/snow/logs"

日志输出文件

按照天级别滚动存储,文件名格式为snow.YYYYMMDD.log

日志输出等级

不设置默认info等级

  1. [Log]
  2. 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格式输出,示例如下:

    1. {"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"}

    日志方法

目前针对业务只提供了以下的调用方法:

  1. logger.Trace(c context.Context, logType string, msg ...interface{})
  2. logger.Debug(c context.Context, logType string, msg ...interface{})
  3. logger.Info(c context.Context, logType string, msg ...interface{})
  4. logger.Warn(c context.Context, logType string, msg ...interface{})
  5. logger.Error(c context.Context, logType string, msg ...interface{})
  6. logger.Fatal(c context.Context, logType string, msg ...interface{})
  7. logger.Panic(c context.Context, logType string, msg ...interface{})
  • context.Context 可以传入任何实现了context.Context接口的数据类型(gin.Context实现了),如果不需要,可以传入nil。
  • logType 日志类型,主要用于区分业务
  • msg …interface 可以传入任意类型的数据,

组件原生Logger

  1. ## 返回*logrus.Logger,实现了通用的logger接口,可以进行非侵入的注入
  2. logger.GetLogger()