Open
Description
bug1:
代码位置: /sdk/pkg/logger/log.go :49
说明: plugins/logger/zap包里对 output的赋值是取自上下文Context,当前代码的logger.WithOutput(output)无效,无法正确设置日志的输出,应该使用 zap包的zap.WithOutput.
bug2:
代码位置: /debug/writer/file.go :104
说明: 在日志库使用zaplog(/plugins/logger/zap/)的情况下有数据被覆盖的风险。代码/plugins/logger/zap/zap.go :58 使用了 zapcore.NewConsoleEncoder(), zap在写入日志数据的时候使用了 sync.pool,代码参见 go.uber.org/zap/zapcore/console_encoder.go :67, 在并发情况下,FileWriter.Write()将data1 []byte写入管道 FileWriter.input, 在数据被真正写入 FileWriter.file.Write()前, zap从对象池重新取出buffer并赋值, 生成data2 []byte,,如果两次取出的buffer地址相同,那么管道内data1的数据会被data2覆盖,导致日志的输出异常。
Metadata
Metadata
Assignees
Labels
No labels