现象:
程序执行正常而打印日志数量不符合预期
原因:
默认配置下,日志会进行取样。
取样规则是,对于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