klog 是 K8s 社区维护的 logging 库,支持在程序命令行注册以下 flag1:
- log_file:输出到日志文件;
- log_file_max_size:日志文件最大大小(单位:mb),如果超过最大值则会擦除日志文件全部内容,并从头开始写日志。未设置最大值时,无限制;
- logtostderr:是否输出到标准错误输出,如果想输出到文件,改值应设为 false;
- skip_log_headers:忽略记录日志元信息;
- v:日志等级
示例 1:手动/自动输出日志到文件
|
|
|
|
示例 2:goroutine 溢出
前面的示例 1 没有停止 Flush 因此会有 groutine leaking 的问题,解决办法是 defer klog.StopFlushDaemon()
。
|
|
示例 3:结构化日志
使用 InfoS、ErrorS 方法
|
|
示例 4:输出到 Buffer
|
|
示例 4:klogr
klogr 实现了 go-logr/logr 接口
|
|