2017-02-01 2 views
0

У нас есть отдельные автономные приложения Java, которые записывают информацию в файлы журнала, с log4j (это старая версия: 1.2.8).log4j регистрирует все независимо от уровня корня

Мы установили уровень корня в ERROR и определили несколько добавлений в зависимости от вызывающего модуля.

Странно, что все регистрируется независимо от уровня (INFO, DEBUG и т. Д.). Затем мы решили добавить опцию -Dlog4j.debug в командной строке Java, чтобы узнать, если бы не был неисправен log4.xml загружаемый файл, а затем мы увидели это:

log4j: Trying to find [log4j.xml] using context classloader [email protected] 
log4j: Trying to find [log4j.xml] using [email protected] class loader. 
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource(). 
log4j: Trying to find [log4j.properties] using context classloader [email protected] 
log4j: Trying to find [log4j.properties] using [email protected] class loader. 
log4j: Trying to find [log4j.properties] using ClassLoader.getSystemResource(). 
log4j: Could not find resource: [null]. 

Почему журнал log4j все, даже если для корневого уровня установлено значение ОШИБКА, и как загрузить конфигурацию, пока кажется, что ее невозможно найти?

EDIT:

1) Да, все записывается в правильной appenders, с правильными именами формата и файлов.
2) Файл log4j.xml находится внутри банка, указанного в пути к классам.

Вот log4j.xml:

<!-- 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> 

EDIT 2:

Я до сих пор не нашли то, что происходит, но вот что я нашел и до сих пор:

1) Файл log4j.xml wa s искажено: в нем отсутствовал DOCTYPE, было несколько макетов, некоторые классы макетов были неправильными.
2) Я указал путь к файлу log4j.xml в командной строке 3) Было несколько вызовов DOMConfigurator и PropertyConfigurator, я удалил их.

Я сузил свое исследование до класса, который создает динамические файлы журналов на основе идентификатора потока. Перед выполнением кода в этом классе в журналах консоли log4j четко указано, что уровень журнала равен ERROR. В тот момент, когда создаются файлы динамического журнала, уровень журнала переключается на DEBUG.

Ответ почти.

EDIT 3

Я нашел виновника!

Сторонний компонент загружает собственную конфигурацию log4j поверх нашей. Он добавляет приложения и изменяет уровень корневого ведения журнала.

Следует отметить, что при загрузке нового файла log4j, похоже, не отлаживает эту информацию на консоли.

+0

Пожалуйста показать вам конфигурационный файл – Jens

+0

Я думаю, вы забыли 'log4j.additivity .... = false' – Jens

+1

Как вы можете установить корень ERROR, если он не может найти файл конфигурации :) У вас есть log4j.properties в classpath? – TedTrippin

ответ

0

Уровень корня был изменен сторонним компонентом, который загружает определенную конфигурацию.

При столкновении с такой проблемой:

  1. Проверьте, если ваш код не содержит какую-либо дополнительная log4j динамической конфигурации загрузки (DOMConfigurator, PropertyConfigurator)
  2. Проверьте, если какой-либо компонент третьей стороны не загружает какие-либо дополнительное log4j configuration
  3. Убедитесь, что ваш log4j.xml (или log4j.properties) действителен.
Смежные вопросы