2012-12-19 10 views
10

Mam następujący plik konfiguracyjny, który jest bardzo podobny do standardowego przykładu w podręczniku Logback. Jedyna różnica polega na dodaniu [% F:% L]. a wszystko działa,% F i% L nie działają. Jeśli usuwam asynchronicznego programistę i loguję się bezpośrednio za pomocą modułu dołączającego plik, wszystko działa doskonale.Logback AyncAppender nie drukuje Plik i numer linii

Czy ktoś może wyjaśnić, co się dzieje? A jak wydrukować nazwę pliku i numer linii, ponieważ te dwa parametry mają na celu?

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

Odpowiedz

21

Musisz ustawić właściwość AsyncAppender na includeCallerData na true. Oto zmodyfikowany plik konfiguracyjny:

<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

Ha, znasz swoje zdanie :) – Klaus

+0

nie dla mojego problemu. Używam wersji 1.2.16 –

0

Podaję tę samą odpowiedź w formacie groovy dla kogoś, kto chce stylu groovy jak ja.

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