2015-10-22 2 views
1

У меня есть ситуация, когда у меня есть 2 приложения, один из которых написан на консоль, другой - файл. Я хотел бы зарегистрировать все с уровнем DEBUG за исключением одного класса. Для этого класса я хочу записать DEBUG в консоль и ERROR в файл.Как зарегистрировать определенный класс с разными уровнями для разных приложений с помощью LOG4J

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

есть ли способ сделать это?

Текущая конфигурация выглядит следующим образом:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> 
<log4j:configuration> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <param name="encoding" value="UTF-8" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ISO8601}: %p [%t] %c - %m%n"/> 
     </layout> 
    </appender> 

    <appender name="file-bl" class="org.apache.log4j.rolling.RollingFileAppender"> 
     <param name="append" value="true"/> 
     <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
      <param name="FileNamePattern" value="log/server-bl2.log.%d{yyyy-MM-dd}.gz"/> 
      <param name="ActiveFileName" value="log/server-bl2.log"/> 
     </rollingPolicy> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ISO8601}: %p [%t] %c - %m%n"/> 
     </layout> 
    </appender> 

    <logger name="org"> 
     <level value="DEBUG"/> 
     <appender-ref ref="console"/> 
     <appender-ref ref="file-bl"/> 
    </logger> 

    <logger name="org.springframework" additivity="false"> 
     <level value="ERROR"/> 
     <appender-ref ref="file-bl"/> 
    </logger> 

    <root> 
     <priority value="DEBUG" /> 
     <appender-ref ref="console" /> 
     <appender-ref ref="file-bl" /> 
    </root> 

</log4j:configuration> 

ответ

0

Итак, в конце концов, я пришел к решению, как это:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> 
<log4j:configuration> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <param name="encoding" value="UTF-8" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ISO8601}: %p [%t] %c - %m%n"/> 
     </layout> 
    </appender> 

    <appender name="file-bl" class="org.apache.log4j.rolling.RollingFileAppender"> 
     <param name="append" value="true"/> 
     <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
      <param name="FileNamePattern" value="log/server-bl.log.%d{yyyy-MM-dd}.gz"/> 
      <param name="ActiveFileName" value="log/server-bl.log"/> 
     </rollingPolicy> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ISO8601}: %p [%t] %c - %m%n"/> 
     </layout> 
    </appender> 

    <logger name="org.springframework" additivity="false"> 
     <level value="DEBUG"/> 
     <appender-ref ref="console"/> 
    </logger> 

    <logger name="org.mybatis" additivity="false"> 
     <level value="DEBUG"/> 
     <appender-ref ref="console"/> 
    </logger>  

    <root> 
     <priority value="DEBUG" /> 
     <appender-ref ref="console" /> 
     <appender-ref ref="file-bl"/> 
    </root> 

</log4j:configuration> 

Корневой уровень лесозаготовок является DEBUG и там 2 appenders: console и file-bl. Тогда есть 2 исключения: org.springframework и org.mybatis. Для них применяется только 1 приложение - консоль.

Хотя это не точное решение проблемы, которую я описал в начале, так как я вообще не регистрирую org.springframework и org.mybatis.