• 简介
  • 核心组件目录
  • 日志输出方式
  • 日志输出目录
  • 日志输出文件
  • 日志输出等级
  • 日志输出格式
    • 日志字段说明
    • 日志以JSON格式输出,示例如下:
  • 日志方法
  • 组件原生Logger

    简介

    日志是基于开源组件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()