Antworten:
Wenn Sie die Protokollierung programmgesteuert deaktivieren möchten, verwenden Sie
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
Sie können den Pegel auf AUS ändern, um alle Protokollierungen zu entfernen. Laut der log4j-Website sind gültige Werte in der Reihenfolge ihrer Wichtigkeit TRACE, DEBUG, INFO, WARN, ERROR, FATAL. Es gibt eine undokumentierte Ebene namens OFF, die höher als FATAL ist und die gesamte Protokollierung deaktiviert.
Sie können auch einen zusätzlichen Root-Logger erstellen, um nichts zu protokollieren (Stufe AUS), sodass Sie Root-Logger einfach wechseln können. Hier ist ein Beitrag , mit dem Sie beginnen können.
Vielleicht möchten Sie auch die Log4J-FAQ lesen , da ich denke , dass das Deaktivieren der gesamten Protokollierung möglicherweise nicht hilft. Es wird Ihre App sicherlich nicht so sehr beschleunigen, da der Protokollierungscode ohnehin ausgeführt wird, bis zu dem Punkt, an dem log4j entscheidet, dass dieser Eintrag nicht protokolliert werden muss.
Ändern Sie das Level auf das, was Sie wollen. (Ich verwende Log4j2, Version 2.6.2). Dies ist der einfachste Weg, wechseln Sie zu<Root level="off">
Zum Beispiel: Datei - log4j2.xml
Entwicklungsumgebung
<?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>
Produktionsumgebung
<?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>
Darüber hinaus ist es auch möglich, die Abmeldung programmgesteuert zu deaktivieren:
Logger.getRootLogger().setLevel(Level.OFF);
Oder
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());
Diese verwenden Importe:
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.NullAppender;