【发布时间】:2012-07-15 22:08:21
【问题描述】:
我正在开发一个使用 log4j 进行日志记录的新 Groovy 应用程序,但是当我使用转换模式符号将调用者的类或方法名称插入到日志输出中时,我得到了本机 java 类/方法名称,而不是那些时髦的。例如:
转换模式
"%d{dd-MM-yyyy HH:mm:ss,SSS} Digitizer: [%p] [%C.%M] %m%n"
给我类似的输出
13-07-2012 15:49:30,667 Digitizer: [DEBUG] [org.apache.log4j.Category$debug.call] Environment: dev
显然,总是告诉我调用者是 log4j 的日志消息没有用。
在http://docs.codehaus.org/display/GROOVY/Logging 的 groovy 站点上有一个对一些 log4j 补丁的引用,看起来它可以解决这个问题,但是该页面已经一年多没有更新了,那里提供的链接给出了 404。
有谁知道我在哪里可以找到这个神秘的 log4j 补丁,或者在我的日志消息中获取有意义的调用者信息的任何其他方式,而不是将其实际硬编码到每个记录器调用中?
【问题讨论】:
-
我似乎记得 info 会降低性能,因此人们倾向于将其硬编码到他们的消息文本中,或者让 IDE 进行硬编码
-
它确实有性能损失(至少根据 log4j 文档),但这仅用于调试目的,无论如何,对于此应用程序,每条消息阻塞几毫秒是可以的。我只是希望它获取的信息是正确的......
-
好的,只要你知道;)。抱歉,我不知道 log4j 补丁的位置。我建议编写自己的附加程序并使用它。然后在你的 append 方法上放一个断点并查找堆栈以查看你是否
-
可以从 groovy 访问你想要的堆栈信息。然后将此逻辑硬编码到您的自定义附加程序中。希望这会有所帮助,我不是 groovy 专家,所以对此无能为力
-
谢谢,看起来没有任何东西可以开箱即用,所以这个建议可能与我得到的一样接近。会试一试。 :)