Java 如何使groovy中的log4j正确解析类/方法名?

Java 如何使groovy中的log4j正确解析类/方法名?,java,groovy,log4j,Java,Groovy,Log4j,我正在开发一个新的Groovy应用程序,它使用log4j进行日志记录,但是当我使用转换模式符号将调用方的类或方法名插入日志输出时,我得到的是本机java类/方法名,而不是Groovy类/方法名。例如: 转换模式 "%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.c

我正在开发一个新的Groovy应用程序,它使用log4j进行日志记录,但是当我使用转换模式符号将调用方的类或方法名插入日志输出时,我得到的是本机java类/方法名,而不是Groovy类/方法名。例如:

转换模式

"%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的日志消息是没有用的

在groovy站点上有一个log4j补丁的参考,看起来它可以解决这个问题,但是这个页面已经一年多没有更新了,这里提供的链接给出了404

有人知道我在哪里可以找到这个神秘的log4j补丁,或者在我的日志消息中获取有意义的呼叫方信息的任何其他方法,除了将其硬编码到每个记录器调用中之外?


但是,它可能不适用于当前版本的groovy。

我似乎记得信息有一个性能损失,所以人们倾向于将其硬编码到消息文本中,或者使用IDE来进行硬编码。它确实有一个性能损失(至少根据log4j文档),但这只是为了调试目的,在任何情况下,对于这个应用程序,每个消息阻塞几毫秒都可以。我只是希望它获取的信息是正确的……只要你知道就行;)。我不知道log4j补丁的位置抱歉。我建议您编写自己的appender并使用它。然后在append方法上放置一个断点,并查找堆栈,看看是否可以从groovy访问所需的堆栈信息。然后将此逻辑硬编码到自定义appender中。希望这能有所帮助,我不是groovy专家,因此无法帮助解决这些问题,看起来似乎没有什么东西可以开箱即用,所以这个建议可能是我最接近的。我将试一试。:)谢谢,看起来这个已经不再维护了,但至少我能看到里面有什么。