2017-02-17 2 views
0

У меня есть отдельное приложение Java с следующей конфигурацией log4j.xml:log4j приоритет регистратор набор по умолчанию

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <appender name="file" class="org.apache.log4j.RollingFileAppender"> 
     <param name="maxFileSize" value="1MB" /> 
     <param name="maxBackupIndex" value="1" /> 
     <param name="File" 
      value=".\\myComp.log" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{dd.MM.yy HH\:mm\:ss.SSS} %5p %c{1}:%L - %m%n " /> 
     </layout> 
    </appender> 

    <category name="com.mycomp.project.starter"> 
     <priority value="${project.client.log.level.starter}" /> 
    </category> 
    <category name="com.security"> 
     <priority value="${project.client.log.level.security}" /> 
    </category> 

    <root> 
     <level value="ERROR" /> 
     <appender-ref ref="file" /> 
    </root> 

</log4j:configuration> 

При запуске приложения я могу установить уровень журнала через INI-файлы Wich может содержать:

-Dproject.client.log.level.starter=INFO 
-Dproject.client.log.level.security=DEBUG 

Что бы я хотел архивировать, если -Dproject.client.log.level.security=DEBUG не установлен, он должен использовать ERROR.

Как я могу архивировать это? Я прикладываю любую помощь.

ответ

0

Хорошо, у меня есть решение, к сожалению, это связано с переходом на log4j2.

Я узнал, что log4j позволяет Property Substitution позволяет использовать системные свойства с префиксом sys:. В сочетании с this finding (где можно установить значения по умолчанию с помощью простого -), я изменил конфиг на:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
     <RollingFile name="file" fileName=".\\myComp.log" append="true" filePattern=".\\myComp-%d{MM-dd-yyyy}-%i.log.gz"> 
      <PatternLayout pattern="%d{dd.MM.yy HH:mm:ss.SSS} %5p %c{1}:%L - %m%n "/> 
      <Policies> 
       <SizeBasedTriggeringPolicy size="1 MB"/> 
      </Policies> 
     </RollingFile> 
    </Appenders> 
    <Loggers> 
     <!-- setting log level per default to INFO if not set through system properties --> 
     <Logger name="com.myComp.starter" level="${sys:project.client.log.level.starter:-INFO}" /> 
     <!-- setting log level per default to ERROR if not set through system properties --> 
     <Logger name="com.security" level="${sys:project.client.log.level.security:-ERROR}" /> 
     <Root level="ERROR"> 
      <AppenderRef ref="file"/> 
     </Root> 
    </Loggers> 
</Configuration> 

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

Смежные вопросы