Почему log4j входит в консоль? - PullRequest
3 голосов
/ 13 июля 2011

Это отдельное Java-приложение.

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

1) Я получаю журналы на стандартный вывод и не знаю почему.

2) Я получаю ВСЕ сообщения журнала в своем журнале ошибок, хотя я пытался перенаправить только ошибку и более позднюю версию в журнал ошибок.

Я использую BasicConfigurator без указанияявный путь к файлу log4j.xml.XML-файл находится в том же банке, что и мои классы.Он создает и записывает в соответствующие журналы в дополнение к этим проблемам, поэтому конфигурация применяется.

3) Кроме того, мне не повезло, что файл log4j.xml находится вне jar, поэтому я могуизменить его во время выполнения.Как мне это сделать?

<!--appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    <param name="Threshold" value="DEBUG"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p [%F:%L] - %m%n"/>
    </layout>
</appender-->

<!-- working dir is $CATALINA_TMPDIR. send logs to log dir. -->
<appender name="ROLL" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/var/log/company/application.log"/>
    <param name="MaxFileSize" value="5MB"/>
    <param name="MaxBackupIndex" value="9"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/>
    </layout>
</appender>

<appender name="ERRORLOG" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/var/log/rocketvox/company/error.log"/>
    <param name="MaxFileSize" value="5MB"/>
    <param name="MaxBackupIndex" value="9"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/>
    </layout>
</appender>

<category name="com.company">
    <priority value="ALL"/>
    <appender-ref ref="ROLL"/>
</category>

<category name="com.mattx">
    <priority value="ALL"/>
    <appender-ref ref="ROLL"/>
</category>

<root>
    <priority value="error"/>
    <appender-ref ref="ERRORLOG"/>
</root>

1 Ответ

3 голосов
/ 13 июля 2011

Добавьте -Dlog4j.debug к аргументам JVM приложения, чтобы точно узнать, что делает log4j и какой файл конфигурации он использует.

Ваша проблема в использовании BasicConfigurer - для настройки с использованием файла с именем log4j.xml вам не нужно использовать явный конфигуратор log4j в коде приложения, так как логика инициализации log4j по умолчанию включится, чтобы выбрать log4j.xml ( или log4j.properties, если xml не найден) из пути к классам.

См. Процедура инициализации по умолчанию из руководства log4j.

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