【问题标题】:Eliminating unnecessary log4j setup output消除不必要的 log4j 设置输出
【发布时间】:2010-11-08 21:05:41
【问题描述】:

我正在开发最终在 Tomcat/JBoss 内部运行的应用程序中使用 log4j,但现在我正在从 Eclipse 内部运行它。我已将其配置为使用 log4j.xml 文件写入 ConsoleAppender 并将其作为系统属性传递,并且我的所有日​​志记录输出都有效。

问题是 log4j 会吐出一堆我真的不需要(或不想)看到的引导程序/启动垃圾。例如:

log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [CoherenceMonitor] additivity to [false].
log4j: Level value for CoherenceMonitor is  [DEBUG].
log4j: Desired Level sub-class: [org.apache.log4j.Level]
log4j: CoherenceMonitor level set to DEBUG
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Setting property [target] to [System.out].
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%-5p  %m%n].
log4j: Adding appender named [console] to category [CoherenceMonitor].

每次运行我的程序时,我都会收到大约 20 行这样的信息,只是噪音掩盖了我真正关心的日志数据。我想要做的是抑制此输出(以“log4j:”开头的所有内容)并且仅包含我自己的日志记录语句的输出。

我已经尝试了所有可以通过 Google 和我的同事找到的方法,包括为 org.apache 类别设置优先级值,如下所示。 (不管我设置的优先级如何,我仍然得到输出。)

<category name="org.apache">
    <priority value="FATAL"/>
</category>

我是 log4j 配置的新手,我的配置非常简单。我只有一个附加程序、一个记录器和这一类。任何有关让 log4j 在进行设置时保持闭嘴的帮助将不胜感激! :-)

【问题讨论】:

    标签: java configuration log4j


    【解决方案1】:

    这看起来像是记录器本身的调试。如果您使用的是 XML 配置,它看起来像这样:

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
    

    将调试设置为 false。

    【讨论】:

    • 嗯...哇。我以为我已经检查了所有内容,不知道我是怎么错过的。那正是它的本来面目。但是,知道有几个同事查看了我的 log4j.xml,但他们也没有看到,我确实感觉好多了。谢谢!
    • 我刚刚花了半天时间与伐木作斗争——否则我也永远不会知道:)
    【解决方案2】:

    除了检查您的 log4j.xml 是否具有 debug="true" 属性外,还要确保您没有设置 log4j.debug 系统参数(在 Eclipse 中,这将出现在 Run Configuration as JVM 参数中,其值为 @ 987654323@)。

    【讨论】:

    • 也是一个很好的建议。虽然我的问题出在 log4j.xml 中,但如果问题只发生在 Eclipse 中,那么知道在哪里查看是非常有用的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 2012-04-11
    • 2016-02-12
    • 2020-01-27
    • 2021-03-24
    • 1970-01-01
    相关资源
    最近更新 更多