Подтвердить что ты не робот

Основная конфигурация log4j

Я использовал log4j для регистрации некоторых шагов в своем приложении. Чтобы быть быстрым и грязным, я использовал:

org.apache.log4j.BasicConfigurator.configure();

Это выводит мои журналы в консоли Eclipse.

Я хочу знать, если и как установить порог уровня выше DEBUG? Другими словами, я не хочу показывать сообщение уровня DEBUG, просто ERR, WARN, INFO.

Спасибо.

EDIT: Могу ли я использовать следующее:

import org.apache.log4j.Logger;
import org.apache.log4j.Level;
[...]
Logger logger = Logger.getLogger(this.class);
logger.setLevel(Level.INFO);
4b9b3361

Ответ 1

Я думаю, что самый простой способ:

    Logger.getRootLogger().setLevel(Level.INFO);

Ответ 2

org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.INFO);

Ответ 3

1) Найдите свой appender, у вас есть что-то подобное в файле конфигурации log4j.xml.

    <appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="C:/logs/rmDebug.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="1500KB"/>
    <param name="MaxBackupIndex" value="2"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="**FOOBAR** %d{dd.MM.yyyy HH:mm:ss} %c  %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="FATAL" />
    </filter>
</appender>

Вы видите значение уровняMin и LevelMax? levelMin - это место, где вы начинаете регистрироваться, и levelMax, где вы останавливаете запись. (с этим конкретным приложением). У вас может быть несколько приложений.

Затем для назначения этого appender классу или пакету. Вы можете сделать что-то вроде этого:

    <category name="com.foobar.automation.doremiResourceManager" additivity="true">
    <appender-ref ref="DEBUG"/>
</category> 

Ответ 4

Предполагая, что вы вызываете BasicConfigurator.configure() перед вызовом любых регистраторов:

Вы можете использовать любой из этих конфигурационных файлов, чтобы изменить его без перекомпиляции:

log4j.properties

log4j.rootLogger=INFO

log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <root> 
    <priority value="INFO"/> 
  </root>
</log4j:configuration>

Один из них должен находиться в командной строке.

Ответ 5

Если вы не настраиваете внутри файла свойств, используйте это:

Logger root = Logger.getRootLogger();
root.setLevel(Level.INFO);
root.addAppender(new ConsoleAppender(
        new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)));

Ответ 6

Что делает BasicConfigurator.configure(), добавление корневого регистратора в ConsoleAppender и установка макета приложения в PatternLayout с шаблоном "% r [% t]% -5p% c -% m% n". Поэтому вам нужно установить уровень корневого регистратора. Если вы задаете только уровень регистратора этого класса, уровень корневого регистратора не изменяется, тогда все остальные регистраторы (кроме этого класса) могут по-прежнему использовать уровень корневого регистратора, поэтому вы все равно увидите нежелательные журналы.

См. http://logging.apache.org/log4j/1.2/manual.html.