Конфигурация Log4j для решения нескольких задач - PullRequest
1 голос
/ 03 декабря 2011

Мне нужно реализовать log4j следующим образом в нашем веб-приложении:

1) Журналы уровня DEBUG не должны добавляться ни в один файл. Эти журналы должны быть доступны только на консоли рабочих станций / IDE при разработке приложения. - это происходит сейчас, но после развертывания эти журналы добавляются в catalina.out, который я должен остановить.

2) Журналы приложения INFO должны идти в одном файле журнала - это происходит прямо сейчас.

3) Для ведения журнала производительности всего приложения, использующего Spring AOP, должна также вестись запись в журнал на основе файлов - еще не реализовано.

log4j конфигурация приведена ниже:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender" >
<param name="Threshold" value="DEBUG" />   
  <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="%d %-5p  [%c{1}] %m %n" />
  </layout>
</appender>

<appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender">
  <param name="Threshold" value="INFO" />
  <param name="File" value="${catalina.home}/logs/dashboard.log"/>
  <param name="DatePattern" value="'-'yyyy-MM-dd'.log'"/>
  <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="[%d{ISO8601}] - %-5p- [%X{USER_ENCRYPT_ID}%x] - %C.%M(%F:%L) - %m %n" />
  </layout>
</appender>


<logger name="com.project14" additivity="false" >   
  <level value="DEBUG" />
  <appender-ref ref="consoleAppender" /> 
  <appender-ref ref="fileAppender"/>      
</logger>

</log4j:configuration>

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

1 Ответ

1 голос
/ 04 декабря 2011

Как я понимаю, вы хотите, чтобы разные приложения добавляли журналы в разные файлы журналов или что-то подобное.

Одна вещь, которую вы здесь упускаете. Пожалуйста, попробуйте использовать фильтры. Вот простой пример, который отправляет разные журналы в разные файлы с использованием фильтров.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
    <param name="Threshold" value="DEBUG" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p  [%c{1}] %m %n" />
    </layout>
</appender>

<appender name="fileAppenderInfo" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="Threshold" value="INFO" />
    <param name="File" value="d:/info.log" />
    <param name="DatePattern" value="'-'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
            value="[%d{ISO8601}] - %-5p- [%X{USER_ENCRYPT_ID}%x] - %C.%M(%F:%L) - %m %n" />
    </layout>
     <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="levelMin" value="INFO" />
                    <param name="levelMax" value="INFO" />
     </filter>
</appender>

<appender name="fileAppenderDebug" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="Threshold" value="DEBUG" />
    <param name="File" value="d:/debug.log" />
    <param name="DatePattern" value="'-'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
            value="[%d{ISO8601}] - %-5p- [%X{USER_ENCRYPT_ID}%x] - %C.%M(%F:%L) - %m %n" />
    </layout>
     <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="levelMin" value="DEBUG" />
                    <param name="levelMax" value="DEBUG" />
     </filter>
</appender>

<appender name="fileAppenderWarn" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="Threshold" value="WARN" />
    <param name="File" value="d:/warn.log" />
    <param name="DatePattern" value="'-'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
            value="[%d{ISO8601}] - %-5p- [%X{USER_ENCRYPT_ID}%x] - %C.%M(%F:%L) - %m %n" />
    </layout>
     <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="levelMin" value="WARN" />
                    <param name="levelMax" value="WARN" />
     </filter>
</appender>


<logger name="com.log4j.test" additivity="false">
    <level value="all"/>
    <appender-ref ref="fileAppenderWarn" />
    <appender-ref ref="fileAppenderDebug"/>
    <appender-ref ref="fileAppenderInfo"/>
</logger>
</log4j:configuration>

Надеюсь, это поможет. Пожалуйста, ответьте мне, если у вас возникнут другие проблемы.

...