Я использую Play 2.1 (Java) и loglog по умолчанию (1.0.7), который поставляется с Play. В одном из моих контроллеров я использую «play.Logger» для печати сообщения журнала отладки. Несмотря на упоминание «%class
» в файле logger.xml, имя класса вызывающего абонента не печатается. Скорее «play.Logger$ALogger
» печатается. Я отлаживал до logback ch.qos.logback.classic.spi.CallerData
, где он возвращает stacktrace как массив, чтобы идентифицировать класс вызывающего. В массиве класс контроллера вызывающего абонента находится в нижней части массива, а наверху - «play.Logger.ALogger
», и это то, что используется в «ch.qos.logback.classic.pattern.ClassOfCallerConverter
» для печати класса name(cda[0].getClassName())
.PlayFramework Запись имени вызывающего вызывающего абонента
Я смотрел другие подобные темы here и here, но они, похоже, не исправляют это.
Вот мой 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>
ли я что-то отсутствует?