Отключение вывода Log4J в Java - PullRequest
82 голосов
/ 21 февраля 2009

Как можно быстро отключить все Log4J выходные данные, используя log4j.properties файл?

Ответы [ 6 ]

113 голосов
/ 21 февраля 2009

Установить уровень на OFF (вместо DEBUG, INFO, ....)

75 голосов
/ 18 июля 2011

Если вы хотите отключить ведение журнала программно, используйте

List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
    logger.setLevel(Level.OFF);
}
46 голосов
/ 25 февраля 2009
 log4j.rootLogger=OFF
13 голосов
/ 21 февраля 2009

Вы можете изменить уровень на OFF, что должно избавить от всей регистрации. Согласно веб-сайту log4j, допустимыми уровнями в порядке важности являются TRACE, DEBUG, INFO, WARN, ERROR, FATAL. Существует один недокументированный уровень , называемый OFF, который является более высоким уровнем, чем FATAL, и отключает всю регистрацию.

Вы также можете создать дополнительный корневой регистратор, чтобы ничего не регистрировать (уровень OFF), чтобы вы могли легко переключать корневые регистраторы. Вот пост , с которого можно начать.

Возможно, вы также захотите прочитать Log4J FAQ, , потому что я думаю, что отключение всей регистрации может не помочь. Это, конечно, не сильно ускорит ваше приложение, потому что в любом случае выполняется регистрация кода, вплоть до того момента, когда log4j решит, что ему не нужно регистрировать эту запись.

4 голосов
/ 18 августа 2016

Изменить уровень на то, что вы хотите. (Я использую Log4j2, версия 2.6.2). Это самый простой способ, измените на <Root level="off">

Например: Файл log4j2.xml
Среда разработки

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <Console name="SimpleConsole" target="SYSTEM_OUT">
            <PatternLayout pattern="%msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="error">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="SimpleConsole"/>
        </Root>
    </Loggers>
</Configuration>

Производственная среда

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <Console name="SimpleConsole" target="SYSTEM_OUT">
            <PatternLayout pattern="%msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="off">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
    <Loggers>
        <Root level="off">
            <AppenderRef ref="SimpleConsole"/>
        </Root>
    </Loggers>
</Configuration>
3 голосов
/ 05 сентября 2017

Кроме того, можно также программно отключить выход из системы:

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

Или

Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...