phuslu / log

Fastest structured logging
MIT License
672 stars 44 forks source link

关于Caller输出的问题 #86

Closed dxvgef closed 4 days ago

dxvgef commented 2 weeks ago

我的配置是log.Logger{Caller: 0},但是调用写的是log.Error().Caller(),输出的样式大概如下:

ERR 25 test/logger.go:105 > error="test "

请问 ERR 后面的 25 是什么?是否有参数可以去除?好像因为这个导致Goland里不能点击这里跳转到文件指定行了

phuslu commented 2 weeks ago

能否提供一下最小复现的代码贴到 play.go.dev 然后分享到这里,谢谢

dxvgef commented 2 weeks ago

能否提供一下最小复现的代码贴到 play.go.dev 然后分享到这里,谢谢

https://go.dev/play/p/njN_NiQoQ3j

image

在 DBG 和文件路径之间有个1,有时候又是别的数。再就是我在项目中具体应用的时候,caller的源文件路径会把src/的目录去掉,例如我的源文件路径是src/test/logger.go,但打印出来的路径是test/logger.go

phuslu commented 2 weeks ago

哦,这个数字是 goid.

  1. 输出全路径的话,可以使用设置 Caller -1,如 https://go.dev/play/p/HeTXcMf8w4J 建议编译时候加上 go build -v -trimpath 这样效果应该就是你要的了。
  2. 去除 goid 的话,可以通过自定义 Console.Formatter 做到,如 https://go.dev/play/p/KqJSvjXfbs1 缺点就是失去了彩色输出
  3. 既要自定义输出格式,又要保持彩色输出,可以参考 https://github.com/phuslu/log/issues/77