können wir den logging-level von log4j zur Laufzeit
ich habe ein Problem, ich möchte ändern, um die Protokollierungsstufe von log4j zur Laufzeit, ich habe versucht, viele Dinge, die mit log4j.properties-Datei, habe ich auch schon versucht zu geschrieben, die einen code nach einer bestimmten Zeit wieder liest die properties-Datei und wieder konfigurieren Sie den logger.
aber das problem ist, ich möchte ändern Sie die Protokollierungsebene auf DEBUG für einen API-Aufruf, und dann, wenn die Aufruf abgeschlossen ist, der logger sollte wieder der Wechsel auf den vorherigen Wert..
bitte helfen..
InformationsquelleAutor der Frage M.J. | 2010-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aufruf der
Logger.setLevel
- Methode mit den gewünschtenLevel
verändern, eineLogger
's output level zur Laufzeit.Folgende ist ein Beispiel, das veranschaulicht die Verwendung:
Den oben genannten Ausgänge:
Den oben veranschaulicht das ändern der Ebene eines
Logger
namensmyLogger
aber wenn die Pegel aller Logger in das aktuelle repository geändert werden soll, werden dann diesetLevel
Methode auf die root-logger erhalten, indemLogger.getRootLogger
sollte aufgerufen werden, ändern Sie die Ebenen auf alle untergeordneten Logger.InformationsquelleAutor der Antwort coobird
Den log-level des Loggers verändert werden kann, durch aufrufen von
setLevel
wie beschrieben von @coobird. Allerdings gibt es einen Haken!Beim Aufruf
getLogger(name)
die logging-Bibliothek zurück, die Sie einer vorhandenenLogger
Objekt, wenn möglich. Wenn zwei oder mehrere threads Anfrage ein logger mit dem gleichen Namen, werden Sie das gleiche Objekt. Wenn einer der threads ruftsetLevel
dies wird sich ändern Sie die logger-level für alle anderen. Das kann zu unerwartetem Verhalten führen.Wenn Sie wirklich brauchen, das zu tun diese Art der Sache, ein besserer Ansatz wäre ein logger mit einem anderen Namen, für den Fall, dass Sie wollen, um die Protokollierung auf einer anderen Ebene.
Allerdings bin ich nicht überzeugt von der Weisheit der Anwendung aufrufen
setLevel
überhaupt. DiesetLevel
Methode zum filtern der log-Meldungen, und Sie sollten nicht sein Wrestling-Kontrolle der Protokollierung, Filterung entfernt von der Benutzer /deployer.InformationsquelleAutor der Antwort Stephen C
Ich denke, es macht Sinn zu rufen
setLevel
wenn ein server einen "Controller" - thread. So können Sie dynamisch ändern logging level zur Laufzeit zu Debuggen ein Problem, und ändern Sie es zurück, wenn Sie fertig sind.Aber ich weiß nicht, was passiert, wenn es heißt, die aus einem separaten thread.
InformationsquelleAutor der Antwort Prasad
Wenn du mit Spring Boot (1.5+), Sie können logger-Endpunkt der POST gewünschten Protokolliergrad.
InformationsquelleAutor der Antwort luboskrnac
Methode setLevel gibt es nur für java.util.die Protokollierung.Logger und nicht für org.apache.die Protokollierung.log4j.Logger
Dies ist, wie wir set log level in apache log4j
InformationsquelleAutor der Antwort Nisar Adappadathil