Comment peut-on rapidement désactiver tous les Log4J en utilisant un log4j.properties
fichier?
Réglez le niveau sur OFF (au lieu de DEBUG, INFO, ....)
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);
}
log4j.rootLogger=OFF
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.
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>
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());