golang zap的使用

  • zap配置说明

    Level :日志级别,只不过它需要的类型是 AtomicLevel 。所以需要使用 zap.NewAtomicLevelAt

    func NewAtomicLevelAt(l zapcore.Level) AtomicLevel {
        a := NewAtomicLevel()
        a.SetLevel(l)
        return a
    }
    
    DebugLevel Level = iota - 1
    // InfoLevel 默认级别
    InfoLevel
    // WarnLevel
    WarnLevel
    // 项目运行中,错误的日志
    ErrorLevel
    // 记录一条消息后,如果是开发环境,则调用panic
    DPanicLevel
    // 记录一条消息后,则调用panic
    PanicLevel
    // 记录一条消息后调用 os.Exit(1).
    FatalLevel

    Development :是否是开发环境。如果是开发模式,对 DPanicLevel 进行堆栈跟踪

    DisableCaller : 不显示调用函数的文件名称和行号。默认情况下,所有日志都显示。

    DisableStacktrace :是否禁用堆栈跟踪捕获。默认对Warn级别以上和生产error级别以上的进行堆栈跟踪。

    Sampling :抽样策略。设置为nil禁用采样。(我自己没用过,有需求的朋友可以研究下)

    Encoding :编码方式,支持 json , console , 也支持自定义(需要通过 RegisterEncoder 注册)

    EncoderConfig : 生成格式的一些配置,后面详细介绍

    OutputPaths : 是url或文件路径列表,用于写入日志输出。

    ErrorOutputPaths :内部日志程序错误路径列表。默认为标准错误。

    InitialFields :加入一些初始的字段数据,比如项目名

    EncoderConfig配置说明:

    MessageKey:输入信息的key名  
    LevelKey:输出日志级别的key名  
    TimeKey:输出时间的key名  
    NameKey CallerKey StacktraceKey跟以上类似,看名字就知道  
    LineEnding:每行的分隔符。基本zapcore.DefaultLineEnding 即"\\n"  
    EncodeLevel:基本zapcore.LowercaseLevelEncoder。将日志级别字符串转化为小写  
    EncodeTime:输出的时间格式  
    EncodeDuration:一般zapcore.SecondsDurationEncoder,执行消耗的时间转化成浮点型的秒  
    EncodeCaller:一般zapcore.ShortCallerEncoder,以包/文件:行号 格式化调用堆栈  
    EncodeName:可选值。