为了账号安全,请及时绑定邮箱和手机立即绑定

当我在 go 中包装记录器时如何获得正确的文件?

当我在 go 中包装记录器时如何获得正确的文件?

Go
一只名叫tom的猫 2021-11-29 15:46:50
我使用这样的全局记录器:[root@dev log]# cat src/logging/logging.go package loggingimport (    "log"    "os")var Logger *log.Loggerfunc init() {    Logger = log.New(os.Stdout, "[Debug]", log.Llongfile|log.LstdFlags)}func Debug(format string, v ...interface{}) {    Logger.SetPrefix("[Debug] ")    Logger.Printf(format, v...)}[root@dev log]# cat src/main/main.go package mainimport "logging"func main() {    logging.Debug("in main")}在主函数中,我想得到:[Debug] 2015/12/10 22:20:23 /tmp/log/src/main/main.go:6: in main但我得到以下输出:[Debug] 2015/12/10 22:20:23 /tmp/log/src/logging/logging.go:16: in main如何获得调用记录器的正确文件?
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

logger.Printf您需要使用原始logger.Output函数,而不是使用,并提供正确callDepth的调用点(默认为 2)。


如果您查看 的代码Logger.Printf,您可以看到默认情况下它是如何完成的:


func (l *Logger) Printf(format string, v ...interface{}) {

    l.Output(2, fmt.Sprintf(format, v...))

}


查看完整回答
反对 回复 2021-11-29
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信