首页 > 编程语言 >go-zap默认配置下日志缺失问题,程序执行正常而打印日志数量不符合预期

go-zap默认配置下日志缺失问题,程序执行正常而打印日志数量不符合预期

时间:2023-01-31 21:47:04浏览次数:38  
标签:默认 Sampling go 日志 程序执行 config 100 zap

现象:

程序执行正常而打印日志数量不符合预期

 

原因:

默认配置下,日志会进行取样。

取样规则是,对于msg相同的日志,前100打印输出,之后每隔100条输出一条

Sampling: &SamplingConfig{ Initial: 100, Thereafter: 100, }  

解决方案:去掉Sampling配置

config.Sampling = nil

 

默认配置信息:

// NewProductionConfig is a reasonable production logging configuration.
// Logging is enabled at InfoLevel and above.
//
// It uses a JSON encoder, writes to standard error, and enables sampling.
// Stacktraces are automatically included on logs of ErrorLevel and above.
func NewProductionConfig() Config {
    return Config{
        Level:       NewAtomicLevelAt(InfoLevel),
        Development: false,
        Sampling: &SamplingConfig{
            Initial:    100,
            Thereafter: 100,
        },
        Encoding:         "json",
        EncoderConfig:    NewProductionEncoderConfig(),
        OutputPaths:      []string{"stderr"},
        ErrorOutputPaths: []string{"stderr"},
    }
}
View Code

 

测试代码:

package main

import (
    "go.uber.org/zap"
)

func main() {

    // 默认配置
    config := zap.NewProductionConfig()
    logger, _ := config.Build()

    for i := 0; i < 1000; i++ {
        logger.Info("test log ------", zap.Any("num", i))
    }

    // 关闭取样
    config.Sampling = nil
    logger1, _ := config.Build()
    for i := 0; i < 200; i++ {
        logger1.Info("test log +++++++", zap.Any("num", i))
    }

}
View Code

 

标签:默认,Sampling,go,日志,程序执行,config,100,zap
From: https://www.cnblogs.com/shirley-bhu/p/17080861.html

相关文章