klog在日志文件中error级别日志重复打印2次
问题现象
package main
import (
"flag"
"gopkg.in/natefinch/lumberjack.v2"
"k8s.io/klog/v2"
)
func main() {
klog.InitFlags(nil)
flag.Set("logtostderr", "false")
flag.Parse()
l := &lumberjack.Logger{
Filename: "test.log",
MaxSize: 1,
MaxBackups: 3,
MaxAge: 28,
Compress: true,
}
klog.SetOutput(l)
defer klog.Flush()
klog.Errorf("error")
}
在日志文件中,klog error级别日志重复打印2次。
问题分析
go/pkg/mod/k8s.io/klog/v2@v2.120.1/klog.go
output方法
如果指定了log_file,那么只输出1次;否则,error级别日志输出3次。
解决问题
flag.Set("log_file", "test.log")
指定日志文件,只输出一次。