【发布时间】:2020-08-30 13:36:52
【问题描述】:
当使用包装好的 logrus 函数/记录器时,记录器会在所有日志行前加上记录器函数调用的文件名和行号,例如:
INFO[0000]logging.go:39 myfolder/logging.Info()
如果我像这样包装日志函数,例如: 包日志记录
import (
"fmt"
"github.com/sirupsen/logrus"
"os"
"path"
"runtime"
)
var (
log *logrus.Logger
)
func init() {
log = logrus.New()
log.SetReportCaller(true)
log.Formatter = &logrus.TextFormatter{
CallerPrettyfier: func(f *runtime.Frame) (string, string) {
filename := path.Base(f.File)
return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
},
}
}
func Info(args ...interface{}) {
log.Info(args...)
}
此函数发出的每一行都将以logging function 调用的行号为前缀。这与预期的一样,但期望的行为是每行都以调用 Info 的行的行号为前缀。
所需的输出应该是:
INFO[0000]myfile.go:39 myfolder/myfile.myfunction()
有什么办法吗?
【问题讨论】: