Как настроить log4j с помощью log4j.xml для добавления в разные файлы журнала на основе имени класса? - PullRequest
27 голосов
/ 19 мая 2009

Я хочу настроить log4j так, чтобы все сообщения журнала, созданные из классов в пакете com.foo.bar, переходили в bar.log, а все сообщения журнала, созданные из классов в пакете com.bar.blatz, переходили в blatz.log ,

Вопросы * * 1003 Как мне это сделать с помощью log4j.xml? Я знаю, что это возможно с помощью файлов свойств, но как мне сделать это с помощью конфигурации XML?

Ответы [ 2 ]

39 голосов
/ 19 мая 2009

Это основано на моем ответе на похожий вопрос:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!-- general application log -->
    <appender name="BarLogFile" class="org.apache.log4j.FileAppender">
        <param name="File" value="bar.log" />
        <param name="Threshold" value="INFO" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
        </layout>
    </appender> 

    <!-- additional fooSystem logging -->
    <appender name="BlatzLogFile" class="org.apache.log4j.FileAppender">
        <param name="File" value="blatz.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
        </layout>
    </appender>

    <logger name="com.foo.bar">
        <appender-ref ref="BarLogFile"/>
    </logger>

    <logger name="com.bar.blatz">
        <appender-ref ref="BlatzLogFile"/>
    </logger>

    <root>
        <level value="INFO"/>
        <!-- no appender, output will be swallowed (I think) -->
    </root>
</log4j:configuration>

Если вы добавите appender-ref к корневому элементу, он также будет получать сообщения com.foo.bar и т. Д. Вы можете остановить это, указав 'additivity = "false"' в регистраторах.

0 голосов
/ 24 апреля 2012
  <root>
        <level value="INFO"/>
        <!-- no appender, output will be swallowed (I think) -->
  </root>

Мы можем добавить здесь дополнений. Это будет работать, если приложение использует root logger. например API кварцевого планировщика.

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