【问题标题】:log4j writes blank lines in consolelog4j 在控制台中写入空行
【发布时间】:2017-06-10 17:34:09
【问题描述】:

我有以下 log4j 配置:

<appender name="MYCONSOLE" class="org.apache.log4j.ConsoleAppender">
  <param name="Threshold" value="INFO"/>
  <param name="Target" value="System.out"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{ISO8601}|%-5p|MYAPP|%t|%C{1}.%M(%L)|%m%n"/>
  </layout>
</appender>

<appender name="MYFILE" class="org.apache.log4j.DailyRollingFileAppender">
  <param name="File" value="${jboss.server.log.dir}/myapp.log"/>
  <param name="Append" value="true"/>
  <param name="DatePattern" value="'.'yyyy-MM-dd"/>

  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{ISO8601}|%-5p|MYAPP|%t|%C{1}.%M(%L)|%m%n"/>
  </layout>
</appender>

在 Eclipse 控制台中,此配置生成的每个日志行后面都有一个完全空白的行:

12:46:27,289 INFO  [stdout] 2017-01-25 12:46:27,289|INFO|MYAPP|something

12:46:27,289 INFO  [stdout] 2017-01-25 12:46:27,289|INFO|MYAPP|something else

这仅发生在 MYCONSOLE 生成的日志中,所有其他日志(例如内部 JBoss 的日志)都没有空行。 此外,在 MYFILE 日志文件中,日志是相同的,但没有空行。

可能是什么原因?

【问题讨论】:

    标签: eclipse logging log4j


    【解决方案1】:

    当我将 consoleAppader 用于审计记录器时,对我来说是一样的

    log4j.appender.audit=org.apache.log4j.ConsoleAppender
    log4j.appender.audit.layout=org.apache.log4j.PatternLayout
    log4j.appender.audit.Target=System.out
    log4j.appender.audit.ConversionPattern=%d{ISO8601}|%t|%m%n
    

    控制台上的日志转储为空行。

    如果我删除我可以摆脱空行,我也会丢失实际数据。 不胜感激任何指针

    【讨论】:

    • 由于我正在阅读审计日志,我需要将 PatternLayout 更改为 Audit Layout ,在添加下面的审计日志之后能够正确打印。 log4j.appender.audit.layout=org.apache.knox.gateway.audit.log4j.layout.AuditLayout
    【解决方案2】:

    我可以通过使用\n 而不是%n 来消除多余的行。

    %n 的奇怪行为的原因我仍然不清楚。

    【讨论】:

    • 寻找这个答案已经很久了。谢谢!
    猜你喜欢
    • 2017-08-27
    • 2011-03-23
    • 2013-09-09
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多