2017-04-06 5 views
0

Wenn ich Logback als Logging-Framework verwende, füge ich Logger-Konfiguration zur Laufzeit zum Debuggen hinzu. Setzen Sie zum Beispiel "org.springframework" auf Debug-Ebene.Logger aus der Konfiguration entfernen

Nachdem ich die Daten gefunden habe, die ich brauche, möchte ich diese Konfiguration entfernen, ohne die Anwendung neu zu starten.

Wie kann ich das tun?

Antwort

2

Je nachdem, wie Sie die Protokollierungsstufe ändern möchten, haben Sie zwei Möglichkeiten.

Erste Option - mit logback.xml

Logback xml bietet eine Option, um in regelmäßigen Abständen die Konfiguration zu scannen. Wenn Sie dies festlegen, fordern Sie das Logger-Framework auf, seine Einstellungen im Arbeitsspeicher regelmäßig zu aktualisieren, um sie mit der XML-Konfiguration zu synchronisieren. Wenn Sie den Debug-Modus aktivieren möchten, wird XML-Konfiguration wie folgt aussehen:

<configuration scan="true" scanPeriod="30 seconds"> 

<!-- Appender configurations here --> 

<logger name="org.springframework" level="debug" additivity="false"> 
    <appender-ref ref="YOUR_APPENDER_NAME"/> 
</logger> 

<!-- Other logger configurations (including root) go here --> 
</configuration> 

Nachdem Sie Ihre Aufgabe abgeschlossen haben, können Sie entweder den Logger-Eintrag löschen oder die Pegel auf Fehler für das Paket zu stoppen anmelden.

Zweite Option - In-Memory

Wenn Sie Ihren logback.xml nicht berühren wollen, aber es irgendwie in Runtime behandeln (zum Beispiel einige REST-APIs von Ihnen Anwendung verwendet wird), können Sie bekommen die spezifische Logger-Instanz und setzen Sie die Ebene auf DEBUG. Sobald Sie Ihre Aktivität abgeschlossen haben, können Sie die Ebene auf "null" setzen, damit die Ebene vom übergeordneten Element übernommen wird. Beispielcode ist wie folgt:

import ch.qos.logback.classic.Level; 
import ch.qos.logback.classic.Logger; 
import ch.qos.logback.classic.LoggerContext; 
import org.slf4j.LoggerFactory; 

..... 

LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); 
Logger logger = context.getLogger("org.springframework"); 
logger.setLevel((Level.toLevel("DEBUG")); 

// Do your task 

logger.setLevel(null); // When we do this, level will be inherited from parent. 
0

logback verfügt über eine Option, mit der die Konfigurationsdatei regelmäßig nach Änderungen durchsucht werden kann.

+0

Ja, ich weiß, ich kann die Konfigurationsdatei bearbeiten. Gibt es eine Möglichkeit, das aus Code zu machen? – igreen

+0

Ja. Die Logback-Dokumentation beschreibt recht gut, wie dies zu tun ist. –

+0

Ich konnte das nicht in den Dokumenten finden ... Könnten Sie Link teilen? – igreen

Verwandte Themen