奇怪的“18个字符”LOGBack行为

时间:2013-03-27 16:44:50

标签: java logging configuration log4j logback

这是我第一次使用Logback - 通常使用log4j - 被依赖项强行插入。

我使用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>

2 个答案:

答案 0 :(得分: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>

假设所有其余的都很好......

答案 1 :(得分:3)

在logback中,模式字符串中的括号用作grouping tokens。他们需要逃脱。