【问题标题】:Logback AyncAppender not printing File and Line numberLogback AyncAppender 不打印文件和行号
【发布时间】:2012-12-06 08:21:17
【问题描述】:

我有如下配置文件,和 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>

【问题讨论】:

    标签: logback fileappender


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    对于像我这样想要 groovy 风格的人,我以 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'])
    

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      相关资源
      最近更新 更多