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>
有帮助吗?

解决方案

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>

其他提示

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'])
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top