Frage Log4J-Ausgabe in Java deaktivieren


Wie kann man schnell alles ausschalten Log4J Ausgabe mit a log4j.properties Datei?


75
2018-02-21 02:16


Ursprung


Antworten:


Stellen Sie den Pegel auf AUS (statt DEBUG, INFO, ....)


105
2018-02-21 02:22



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);
}

72
2017-07-18 17:42



 log4j.rootLogger=OFF

43
2018-02-25 09:42



Sie können die Stufe auf OFF setzen, um die Protokollierung zu löschen. Gemäß der log4j-Website sind gültige Ebenen in der Reihenfolge ihrer Wichtigkeit TRACE, DEBUG, INFO, WARN, ERROR, FATAL. Es gibt eine undokumentierte Ebene OFF genannt, was eine höhere Stufe als FATAL ist, und alle Logging-Funktionen deaktiviert.

Sie können auch einen zusätzlichen Root-Logger erstellen, um nichts zu protokollieren (Level OFF), so dass Sie Root-Logger einfach wechseln können. Hier ist ein Beitrag um dich damit anzufangen.

Vielleicht möchten Sie auch die Log4J FAQ, weil ich denke, das Abmelden kann nicht helfen. Es wird sicherlich Ihre App nicht so sehr beschleunigen, da der Logging-Code sowieso ausgeführt wird, bis zu dem Punkt, an dem log4j entscheidet, dass er diesen Eintrag nicht protokollieren muss.


12
2018-02-21 12:07



Ändere das Level auf was du willst. (Ich verwende Log4j2, Version 2.6.2). Dies ist der einfachste Weg, zu ändern <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>

Produktionsumfeld

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



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());

3
2017-09-05 17:08