Logback AyncAppender не печатает номер файла и строки

У меня есть следующий файл конфигурации, который очень похож на стандартный пример в руководстве Logback. Единственное отличие заключается в добавлении [%F:%L]. пока все работает, %F и %L не работают. Если я удалю асинхронное приложение и войду в систему напрямую, используя файловое приложение, все будет работать просто отлично.

может кто-нибудь объяснить, что происходит? А как вывести имя файла и номер строки, как положено этим двум параметрам?

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>myapp.log</file>
    <encoder><pattern>%logger{35} - [%F:%L] - %msg%n</pattern></encoder>
    </appender>
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
         <appender-ref ref="FILE" />
    </appender>
   <root level="DEBUG"><appender-ref ref="ASYNC" /></root>
 </configuration>

person Klaus    schedule 19.12.2012    source источник


Ответы (2)


Вам необходимо установить для свойства AsyncAppender includeCallerData значение true. Вот измененный файл конфигурации:

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
      <file>myapp.log</file>
      <encoder><pattern>%logger{35} - [%F:%L] - %msg%n</pattern></encoder>
    </appender>

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
      <appender-ref ref="FILE" />
      <!-- add the following line -->
      <includeCallerData>true</includeCallerData>
    </appender>

    <root level="DEBUG"><appender-ref ref="ASYNC" /></root>
 </configuration>
person Ceki    schedule 19.12.2012
comment
@Ceki, спасибо, если бы вы могли указать, какие атрибуты шаблона связаны с данными вызывающего абонента, а какие не предназначены для входа в систему. logback.qos.ch/manual/layouts.html#conversionWord - person kisna; 06.08.2019

Я публикую тот же ответ в отличном формате для тех, кто хочет такой стиль, как я.

appender('FILE', ch.qos.logback.core.FileAppender) {
    file = 'myapp.log'
    encoder(PatternLayoutEncoder) {
        pattern = '%logger{35} - [%F:%L] - %msg%n'
    }
}
appender('ASYNC', ch.qos.logback.classic.AsyncAppender) {
    appenderRef('FILE')
    //add the following line
    includeCallerData = true
}

root(DEBUG, ['ASYNC'])
person heemin    schedule 27.01.2016