programing

Java에서의 Log4J 출력 디세이블화

goodjava 2022. 11. 5. 17:49

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라고 불리는 문서화되어 있지 않은 레벨이1개 있어 모든 로깅이 꺼집니다.

또한 추가 루트 로거를 생성하여 아무것도 기록하지 않고(레벨을 끄면) 루트 로거를 쉽게 전환할 수 있습니다. 일을 시작하기 위한 게시물을 보내드립니다.

Log4J FAQ도 읽어보실 수 있습니다.모든 로깅을 해제해도 도움이 되지 않을 수 있습니다.log4j가 이 엔트리를 기록할 필요가 없다고 판단할 때까지 로깅 코드가 실행되기 때문에 앱 속도가 그다지 빨라지지 않을 것입니다.

또한 프로그래밍 방식으로 로깅을 끌 수도 있습니다.

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

또는

Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());

Import는 다음과 같이 사용합니다.

import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.NullAppender;

원하는 레벨로 변경합니다(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>

언급URL : https://stackoverflow.com/questions/571960/disabling-log4j-output-in-java