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")

指定日志文件,只输出一次。

posted on 2024-05-02 09:57  王景迁  阅读(67)  评论(0编辑  收藏  举报

导航