代码之家  ›  专栏  ›  技术社区  ›  Quinn Taylor

消除不必要的log4j设置输出

  •  10
  • Quinn Taylor  · 技术社区  · 15 年前

    我正在开发一个最终运行在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: “)并且只包括来自我自己的日志语句的输出。

    我已经尝试了通过谷歌和我的同事所能找到的一切,包括为 org.apache 类别如下所示。(不管我设置的优先级如何,我仍然得到输出。)

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

    我是log4j配置的新手,我的配置非常简单。我只有一个附加器、一个记录器和一个类别。任何帮助让log4j保持它的嘴闭上,而它正在做设置将是非常感谢!:-)

    2 回复  |  直到 15 年前
        1
  •  15
  •   javamonkey79    15 年前

    这看起来像是日志程序本身的调试。如果您使用的是XML配置,则如下所示:

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

    将调试改为假。

        2
  •  3
  •   matt b    15 年前

    除了检查log4j.xml是否具有 debug="true" 属性,同时确保没有 log4j.debug 系统参数集(在Eclipse中,这将作为jvm参数出现在运行配置中,值为 -Dlog4j.debug )