Как избежать root appender, добавляемого в sub logger - PullRequest
1 голос
/ 19 мая 2011

Я реализовал файл log4j.xml с двумя регистраторами. Оба EventLogger и ErrorLogger вошли в текстовый файл. Также я создаю консольный appender и добавляю его в корень. Моя проблема в том, что когда я использую EventLogger или ErrorLogger, он одновременно записывает данные в консоль, а также в текстовый файл. Мне нужно избегать этого. Может кто-нибудь, пожалуйста, помогите мне. После я показал вам XML-файл

<?xml version="1.0" encoding="UTF-8" ?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="ErrorAPPENDER" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="./log/FIX5SvrError.log"/>
        <param name="Append" value="true"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-4r [%t] %-5p %x - %m%n" />
        </layout>
    </appender>
    <appender name="EventAPPENDER" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="./log/FIX5SvrEvent.log"/>
        <param name="Append" value="true"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-4r [%t] %-5p %x - %m%n" />
        </layout>
    </appender>
    <appender name="ConsoleAPP" class="org.apache.log4j.ConsoleAppender"> 
        <param name="Target" value="System.out"/> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%m%n"/> 
        </layout> 
    </appender>
    <logger name="ErrorLogger">
        <level value="debug"/>
        <appender-ref ref="ErrorAPPENDER" />
    </logger>
    <logger name="EventLogger">
        <level value="debug"/>
          <appender-ref ref="EventAPPENDER" />
    </logger>
    <root>
        <priority value ="debug" />
         <appender-ref ref="ConsoleAPP" />
    </root>
</log4j:configuration>

1 Ответ

3 голосов
/ 19 мая 2011

Для регистраторов, выход которых вы не хотите перколировать, вам нужно установить additivity = false.

<logger name="ErrorLogger" additivity="false">
    <level value="debug"/>
    <appender-ref ref="ErrorAPPENDER" />
</logger>
<logger name="EventLogger" additivity="false">
    <level value="debug"/>
      <appender-ref ref="EventAPPENDER" />
</logger>

Поиск аддитивности в руководстве для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...