Java log4j记录所有内容,而不考虑根级别
我们有一些独立的java应用程序,它们使用log4j(旧版本:1.2.8)将信息记录到日志文件中 我们已经将根级别设置为ERROR,并根据调用模块定义了几个appender 奇怪的是,不管级别(信息、调试等),所有内容都会被记录下来。然后,我们决定将-Dlog4j.debug选项添加到java命令行,以确定是否加载了错误的log4.xml文件,然后我们看到:Java log4j记录所有内容,而不考虑根级别,java,log4j,Java,Log4j,我们有一些独立的java应用程序,它们使用log4j(旧版本:1.2.8)将信息记录到日志文件中 我们已经将根级别设置为ERROR,并根据调用模块定义了几个appender 奇怪的是,不管级别(信息、调试等),所有内容都会被记录下来。然后,我们决定将-Dlog4j.debug选项添加到java命令行,以确定是否加载了错误的log4.xml文件,然后我们看到: log4j: Trying to find [log4j.xml] using context classloader sun.misc.
log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@64c3c749.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@64c3c749 class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@64c3c749.
log4j: Trying to find [log4j.properties] using sun.misc.Launcher$AppClassLoader@64c3c749 class loader.
log4j: Trying to find [log4j.properties] using ClassLoader.getSystemResource().
log4j: Could not find resource: [null].
为什么log4j会记录所有内容,即使根级别设置为ERROR,并且在似乎找不到配置的情况下如何加载配置
编辑:
1) 是的,所有内容都以正确的格式和文件名记录到正确的附件中。2) log4j.xml位于类路径中指定的jar中 以下是log4j.xml文件:
编辑2:
我仍然没有发现发生了什么,但以下是我到目前为止发现并做过的事情:
1) log4j.xml文件格式不正确:缺少DOCTYPE,存在多个布局,某些布局类不正确。2) 我已经在命令行中指定了log4j.xml文件的路径 3) 有几个对DOMConfigurator和PropertyConfigurator的调用,我已经删除了它们 我已将研究范围缩小到一个类,该类基于线程id创建动态日志文件。在该类中的代码执行之前,log4j控制台日志明确说明日志级别为错误。创建动态日志文件时,日志级别将切换到调试 答案就在眼前 编辑3 我找到罪犯了 第三方组件在我们的配置之上加载自己的log4j配置。它添加了appender,并更改了根日志记录级别
值得注意的是,当加载新文件时,log4j似乎不会将该信息调试到控制台。根级别由第三方组件更改,该组件加载特定配置 面对这样的问题:
DOMConfigurator
,PropertyConfigurator
)请显示配置文件我想您忘记了
log4j。可加性….=false
如果根目录找不到配置文件,如何将其设置为错误:)类路径上是否有log4j.properties?它是否使用定义的消息模式记录到定义的附加器?从上面的日志来看,它应该使用默认的日志配置。
<!-- Definition des appenders par niveau de log -->
<appender name="all" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_ARBOR2010_ALL.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="levelToMatch" value="ERROR"/>
</filter>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<appender name="debug" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_ARBOR2010_DEBUG.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="levelToMatch" value="DEBUG"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<appender name="info" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_ARBOR2010_INFO.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="levelToMatch" value="INFO"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<appender name="warn" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_ARBOR2010_WARN.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="levelToMatch" value="WARN"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<appender name="error" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_ARBOR2010_ERROR.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="levelToMatch" value="ERROR"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<appender name="fatal" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_ARBOR2010_FATAL.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="levelToMatch" value="FATAL"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<!-- Definition des appenders specifiques -->
<!-- MVNO 2012 -->
<appender name="mvno2012" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_MVNO2012.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %t | %L | %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="DEBUG"/>
<param name="levelMax" value="FATAL"/>
</filter>
</appender>
<!-- Moteur de collecte -->
<appender name="engine_collecte" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_COLLECTE_ENGINE.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="DEBUG"/>
<param name="levelMax" value="FATAL"/>
</filter>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %t | %L | %m%n" />
</layout>
</appender>
<!-- Utilitaires apache (org.apache ...) -->
<appender name="apache_utilities" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_APACHE_UTILITIES.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="levelMin" value="DEBUG"/>
<param name="levelMax" value="FATAL"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<appender name="aruba" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_ARUBA.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="DEBUG"/>
<param name="levelMax" value="FATAL"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<appender name="fx" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_FX.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="DEBUG"/>
<param name="levelMax" value="FATAL"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<appender name="tuxedo" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_TUXEDO.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="DEBUG"/>
<param name="levelMax" value="FATAL"/>
</filter>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c | %L | %m%n" />
</layout>
</appender>
<appender name="arbor2010" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${REP_LOG_OPE}/CA_ARBOR2010.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="80000KB"/>
<param name="MaxBackupIndex" value="2000"/>
<layout class="org.apache.log4j.SimpleLayout"/>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="DEBUG"/>
<param name="levelMax" value="FATAL"/>
</filter>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd/MM/yy - HH:mm:ss,SSS} | %-1p | %c{1} | %L | %X{ID} | %m%n" />
</layout>
</appender>
<logger name="com.ours.theirs.arbor2010" additivity="false">
<appender-ref ref="arbor2010"/>
</logger>
<logger name="com.ours.theirs.mvno2012" additivity="false">
<appender-ref ref="mvno2012"/>
</logger>
<logger name="com.csgsystems" additivity="false">
<appender-ref ref="aruba"/>
</logger>
<logger name="terrapin" additivity="false">
<appender-ref ref="tuxedo"/>
</logger>
<logger name="com.csgsystems.fx" additivity="false">
<appender-ref ref="fx"/>
</logger>
<logger name="com.ours.collecte" additivity="true">
<appender-ref ref="engine_collecte"/>
</logger>
<logger name="com.ours.common" additivity="false">
<appender-ref ref="engine_collecte"/>
</logger>
<logger name="org.apache" additivity="false">
<appender-ref ref="apache_utilities"/>
</logger>
<root>
<level value="ERROR"/>
<appender-ref ref="all"/>
</root>