Меня интересует программное изменение уровня лога в Log4j2. Я попытался посмотреть их документацию по конфигурации, но там ничего не было. Я также попытался заглянуть в пакет:, org.apache.logging.log4j.core.config
но и там ничего не помогло.
109
Ответы:
ИЗМЕНИТЬ согласно log4j2 версии 2.4 FAQ
Вы можете установить уровень логгера с помощью класса Configurator из Log4j Core. НО имейте в виду, что класс Configurator не является частью общедоступного API.
Источник
ИЗМЕНИТЬ, чтобы отразить изменения в API, представленные в Log4j2 версии 2.0.2
Если вы хотите изменить уровень корневого регистратора, сделайте что-то вроде этого:
Вот javadoc для LoggerConfig.
источник
Принятый ответ @slaadvak не сработал для меня для Log4j2 2.8.2 . Следующее сделало.
Для
Level
универсального изменения журнала используйте:Чтобы изменить журнал
Level
только для текущего класса, используйте:источник
Если вы хотите изменить один конкретный уровень регистратора (не корневой регистратор или регистраторы, настроенные в файле конфигурации), вы можете сделать это:
источник
setLevel(logger, Level.ERROR);
и все еще напечатанные операторы logger.debug. Мой файл log4j2.xml находится по адресу pastebin.com/fcbV2mTWЯ нашел здесь хороший ответ: https://garygregory.wordpress.com/2016/01/11/changing-log-levels-in-log4j2/
Вы можете использовать org.apache.logging.log4j.core.config.Configurator, чтобы установить уровень для определенного регистратора.
источник
Программный подход довольно навязчив. Возможно, вам стоит проверить поддержку JMX, предоставляемую Log4J2:
Включите порт JMX при запуске приложения:
-Dcom.sun.management.jmxremote.port = [номер_порта]
Используйте любой из доступных клиентов JMX (JVM предоставляет один в JAVA_HOME / bin / jconsole.exe) во время выполнения вашего приложения.
В JConsole найдите bean-компонент org.apache.logging.log4j2.Loggers.
Наконец измените уровень вашего регистратора
Что мне больше всего нравится, так это то, что вам не нужно изменять свой код или конфигурацию для управления этим. Это все внешнее и прозрачное.
Дополнительная информация: http://logging.apache.org/log4j/2.x/manual/jmx.html
источник
Большинство ответов по умолчанию предполагают, что ведение журнала должно быть аддитивным. Но предположим, что какой-то пакет создает много журналов, и вы хотите отключить ведение журнала только для этого конкретного регистратора. Вот код, который я использовал, чтобы заставить его работать
Тестовый пример для того же
Предполагая, что следующий log4j2.xml находится в пути к классам
источник
Я нашел один необычный способ - создать два отдельных файла с разным уровнем ведения журнала.
Например. log4j2.xml и log4j-debug.xml Теперь измените конфигурацию из этих файлов.
Образец кода:
источник