2013-03-27 84 views
3

這是我第一次使用Logback - 通常使用log4j - 被依賴項強制進入它。奇怪的「18個字符」LOGBack行爲

我使用在線轉換器log4j.properties - >logback.xml

當我運行應用程序時,我得到的是任何日誌行的前18個字符,最後沒有換行符。在控制檯和日誌文件中產生的輸出是:

16:32:00.537 (main16:32:00.537 (main16:32:00.537 (main16:32:00.537 
(main16:32:00.537 (main16:32:00.537 (main16:32:00.537 (main16:32:00.537 (main 

究竟是什麼造成了這種情況?

的logback.xml是

<configuration> 
    <appender name="xyzzy" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <File>xyzzy.log</File> 
    <encoder> 
     <charset>UTF-8</charset> 
     <pattern>%d{HH:mm:ss.SSS} (%t) %-5p [%c{36}] - %msg%n</pattern> 
    </encoder> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <fileNamePattern>xyzzy.log.%d</fileNamePattern> 
    </rollingPolicy> 
    </appender> 
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <charset>UTF-8</charset> 
     <pattern>%d{HH:mm:ss.SSS} (%t) [%c{36}] %msg%n</pattern> 
    </encoder> 
    </appender> 
    <logger name="com.package" level="DEBUG"/> 
    <logger name="org.apache.http.client.protocol.ResponseProcessCookies" level="ERROR"/> 
    <root level="WARN"> 
    <appender-ref ref="xyzzy"/> 
    <appender-ref ref="console"/> 
    </root> 
</configuration> 

回答

3

我不知道,但的logback,according to the documentation, 我敢肯定,

(%t) 

應該

[%t] 

和這正是你的模式打破的地方...

然後

嘗試用:

<pattern>%d{HH:mm:ss.SSS} [%t] %-5p [%c{36}] - %msg%n</pattern> 

[...] 

<pattern>%d{HH:mm:ss.SSS} [%t] [%c{36}] %msg%n</pattern> 

假設所有的休息是好的...

+0

非常棒!這正是原因,也是邏輯推理。試了一下,然後谷歌搜索「logback括號」顯示這近乎重複: http://stackoverflow.com/questions/2944364/logback-no-end-of-line-delimiter – Stewart 2013-03-27 16:57:03

+1

不錯,那麼你可以做它通過逃避圓括號,很高興知道 – 2013-03-27 16:59:42

3

的logback中,括號中的模式字符串中作爲grouping tokens。他們需要逃脫。