Pregunta Desactivar Log4J Output en Java


¿Cómo puede uno apagar rápidamente todo Log4J salida usando un log4j.properties ¿archivo?


75
2018-02-21 02:16


origen


Respuestas:


Poner el nivel en OFF (en lugar de DEBUG, INFO, ....)


105
2018-02-21 02:22



Si desea desactivar el registro mediante programación, utilice

List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
    logger.setLevel(Level.OFF);
}

72
2017-07-18 17:42



 log4j.rootLogger=OFF

43
2018-02-25 09:42



Puede cambiar el nivel a OFF, lo que debería eliminar todos los registros. De acuerdo con el sitio web log4j, los niveles válidos en orden de importancia son RASTREO, DEPURACIÓN, INFORMACIÓN, ADVERTENCIA, ERROR, FATAL. Ahi esta un nivel no documentado se llama OFF, que es un nivel más alto que FATAL, y desactiva todo el registro.

También puede crear un registrador de raíz adicional para registrar nada (nivel DESACTIVADO), para que pueda cambiar los registradores de raíz fácilmente. Aquí hay una publicación para que comiences con eso.

También es posible que desee leer el Preguntas frecuentes de Log4J, porque creo que apagar todos los registros puede no ser de ayuda. Ciertamente, no acelerará mucho su aplicación, ya que el código de registro se ejecuta de todos modos, hasta el punto donde log4j decide que no necesita registrar esta entrada.


12
2018-02-21 12:07



Cambia el nivel a lo que quieres. (Estoy usando Log4j2, versión 2.6.2). Esta es la manera más simple, cambie a <Root level="off">

Por ejemplo: Archivo log4j2.xml
Entorno de desarrollo

<?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>

Entorno de producción

<?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>

4
2017-08-18 09:12



Además, también es posible desactivar el inicio de sesión mediante programación:

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

O

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

3
2017-09-05 17:08