Як можна швидко вимкнути всі вихідні дані Log4J за допомогою log4j.properties
файлу?
Відповіді:
Якщо ви хочете програмово вимкнути журналювання, використовуйте
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
Ви можете змінити рівень на ВИМК., Що повинно позбутися всіх реєстрацій. Відповідно до веб-сайту log4j, дійсними рівнями в порядку важливості є TRACE, DEBUG, INFO, WARN, ERROR, FATAL. Існує один недокументований рівень, який називається OFF, який є вищим за FATAL, і вимикає всі журнали.
Ви також можете створити додатковий кореневий реєстратор, щоб нічого не реєструвати (рівень ВИМК), щоб ви могли легко перемикати кореневі реєстратори. Ось допис, щоб ви почали з цього.
Можливо, ви також захочете прочитати поширені запитання щодо Log4J, оскільки, на мою думку, вимкнення всіх журналів може не допомогти. Це, безумовно, не настільки пришвидшить вашу програму, тому що реєстраційний код все одно виконується, аж до того моменту, коли log4j вирішить, що йому не потрібно реєструвати цей запис.
Змініть рівень на бажаний. (Я використовую 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>
Крім того, також можна програмно вимкнути вхід:
Logger.getRootLogger().setLevel(Level.OFF);
Або
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());
Вони використовують імпорт:
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.NullAppender;