Pregunta

I have the following configuration file that is very similar to the standard example in the Logback manual. The only difference is the addition of [%F:%L]. while everything works, %F and %L do not work. If I remove the async appender and log directly using the file appender, everything works just great.

can somebody explain what is going on? And how to print the file name and line number as these two parameters are supposed to?

<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>
¿Fue útil?

Solución

You need to set AsyncAppender's includeCallerData property to true. Here is the modified config file:

<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>

Otros consejos

I post same answer in groovy format for someone who want groovy style like me.

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'])
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top