我正在使用 Play 2.1 (Java) 和 Play 附带的默认 logback (1.0.7) 记录器。在我的一个控制器中,我使用“play.Logger”来打印调试日志消息。尽管%class
在 logger.xml 中提到了“”,但调用者类名并没有被打印出来。而是“ play.Logger$ALogger
”正在打印。我调试到 logbackch.qos.logback.classic.spi.CallerData
将堆栈跟踪作为数组返回以识别调用者类。在数组中,我的调用者控制器类位于数组的底部,而顶部是“ play.Logger.ALogger
”项,这就是“ ch.qos.logback.classic.pattern.ClassOfCallerConverter
”中用于打印类的内容name(cda[0].getClassName())
。
我确实在这里和这里查看了其他类似的线程,但它们似乎没有解决这个问题。
这是我的 XML
<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${application.home}/logs/debug_log.log</file>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date - [%level] - from %logger %class in %thread %n%message%n%xException%n</pattern>
</layout>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${application.home}/logs/debug_log.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
我错过了什么吗?