파일을 사용하여 모든 Log4J 출력을 어떻게 빠르게 끌 수 log4j.properties
있습니까?
답변:
프로그래밍 방식으로 로깅을 끄려면 다음을 사용하십시오.
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
log4j.rootLogger=OFF
레벨을 OFF로 변경하여 모든 로깅을 제거 할 수 있습니다. log4j 웹 사이트에 따르면 중요도 순으로 유효한 레벨은 TRACE, DEBUG, INFO, WARN, ERROR, FATAL입니다. 이 하나 개의 문서화되지 않은 수준의 모든 로그 오프 FATAL보다 높은 수준이다 OFF라고하고, 회전은.
추가 루트 로거를 생성하여 아무것도 기록하지 않도록 (레벨 OFF), 루트 로거를 쉽게 전환 할 수 있습니다. 여기에 시작하는 데 도움이 되는 게시물 이 있습니다.
모든 로깅을 끄는 것이 도움이되지 않을 수 있다고 생각하기 때문에 Log4J FAQ 를 읽어보고 싶을 수도 있습니다 . 어쨌든 로깅 코드가 실행되기 때문에 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;