Logback异步Appender未打印文件和行号

12

我有以下配置文件,它与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>
2个回答

34

您需要将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>

@Ceki,如果您能够在logback中包含与调用者数据相关的模式属性和不相关的模式属性的链接,我们将不胜感激。https://logback.qos.ch/manual/layouts.html#conversionWord - kisna

1

我为那些像我一样想要Groovy风格的人发布了相同的答案。

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'])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接