2013-03-27 72 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。他们需要逃脱。