Как я могу направить вывод log4j, чтобы разные уровни журналов попадали к разным приложениям? - PullRequest
8 голосов
/ 15 апреля 2009

Возможно ли, чтобы вывод "debug" и "info" записывался в консоль, в то время как вывод "info" записывался только в некоторый файл журнала? Например, с учетом этого журнала:

LOG.debug(fileContent);
LOG.info(fileLength);

Как выглядит соответствующий log4j.xml?

Ответы [ 5 ]

10 голосов
/ 16 апреля 2009

Хорошо, теперь у меня есть:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        ...
    </appender>

    <appender name="otherAppender"
              class="org.apache.log4j.FileAppender FileAppender">
       <param name="Threshold" value="INFO"/>
        ...
    </appender>

    <root>
        <priority     value="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="otherAppender" />
    </root>
</log4j:configuration>

Спасибо за вашу помощь!

5 голосов
/ 15 апреля 2009

Это определенно возможно. Конфигурация будет выглядеть примерно так (не проверяется на синтаксическую корректность):

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        ...
    </appender>

    <appender name="otherAppender"
              class="org.apache.log4j.FileAppender FileAppender">
        ...
    </appender>

    <logger name="com.mycompany.mypackage.MyClass">
        <level        value="info"/>
        <appender-ref ref="otherAppender" />
    </logger>

    <root>
        <priority     value="debug" />
        <appender-ref ref="console" />
    </root>
</log4j:configuration>

Все отладочные и информационные сообщения отправляются приложению console. Информационные сообщения идут на otherAppender.

1 голос
/ 15 апреля 2009

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

Это так же просто, как добавить в программу два разных приложения, по одному для каждого типа ведения журнала.

0 голосов
/ 16 апреля 2009

Сделайте, как предложил rwwilden, но удалите эту часть:

<logger name="com.mycompany.mypackage.MyClass">
    <level value="info"/>
    <appender-ref ref="otherAppender" />
</logger>

И добавьте <param name="Threshold" value="INFO"/> под другим приложением.

0 голосов
/ 16 апреля 2009

С помощью конфигурации от Эдди я могу получить только вывод «info» для MyClass. Но то, что я хотел бы иметь, - то, что вывод "info" MyClass идет в файл И вывод "отладки" MyClass идет в консоль.

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