web-dev-qa-db-fra.com

Désactivation de la sortie Log4J dans Java

Comment peut-on rapidement désactiver tous les Log4J en utilisant un log4j.properties fichier?

82
cmcginty

Réglez le niveau sur OFF (au lieu de DEBUG, INFO, ....)

115
Edwin

Si vous souhaitez désactiver la journalisation par programme, utilisez

List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
    logger.setLevel(Level.OFF);
}
75
Andrew Gilmartin
 log4j.rootLogger=OFF
46
flybywire

Vous pouvez changer le niveau sur OFF, ce qui devrait vous débarrasser de toute la journalisation. Selon le site Web log4j, les niveaux valides par ordre d'importance sont TRACE, DEBUG, INFO, WARN, ERROR, FATAL. Il existe n niveau non documenté appelé OFF, qui est un niveau supérieur à FATAL et désactive toute la journalisation.

Vous pouvez également créer un enregistreur racine supplémentaire pour ne rien enregistrer (niveau désactivé), afin de pouvoir changer facilement d'enregistreur racine. Voici un post pour vous aider à commencer.

Vous voudrez peut-être aussi lire la Log4J FAQ, car je pense que désactiver tous les enregistrements peut ne pas aider. Cela ne va certainement pas beaucoup accélérer votre application, car le code de journalisation est quand même exécuté, jusqu'au moment où log4j décide qu'il n'est pas nécessaire de consigner cette entrée.

13
Rolf

Changez de niveau pour ce que vous voulez. (J'utilise Log4j2, version 2.6.2). C'est le moyen le plus simple, changez pour <Root level="off">

Par exemple: Fichier log4j2.xml
Environnement de développement

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

Environnement de production

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

En outre, il est également possible de désactiver la journalisation par programmation:

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

Ou

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