[java] Java에서 Log4J 출력 비활성화

파일을 사용하여 모든 Log4J 출력을 어떻게 빠르게 끌 수 log4j.properties있습니까?



답변

레벨을 OFF로 설정합니다 (DEBUG, INFO, …. 대신).


답변

프로그래밍 방식으로 로깅을 끄려면 다음을 사용하십시오.

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;


답변