12

Logbackマニュアルの標準的な例と非常によく似た次の構成ファイルがあります。唯一の違いは、[%F:%L]の追加です。すべてが機能している間、%Fと%Lは機能しません。非同期アペンダーを削除し、ファイルアペンダーを使用して直接ログに記録すると、すべてがうまく機能します。

誰かが何が起こっているのか説明できますか?そして、これらの2つのパラメーターが想定されているように、ファイル名と行番号を出力するにはどうすればよいですか?

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

2 に答える 2

32

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>
于 2012-12-19T09:18:56.223 に答える
1

私のような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'])
于 2016-01-27T02:24:08.733 に答える