So ändern Sie die Protokollstufe in SLF4j OR Log4J dynamisch

8

Kürzlich bin ich auf eine Situation gestoßen, bei der sich Application Loglevel dynamisch ändert. Application Admin kann es von Front-End auf INFO / DEBUG / WARN festlegen. Basierend auf der gewählten Protokollebene muss die Anwendungsprotokollierung geändert werden.

Ich bin sicher, dass Logger dieses Szenario unterstützen, aber ich bin mir nicht sicher, wie ich das erreichen kann. Wenn jemand von Ihnen eine Idee / Gedanken dazu hat, lassen Sie es mich wissen.

Vielen Dank im Voraus für Ihre Hilfe.

-Narendra

    
Narendra 18.11.2012, 18:06
quelle

3 Antworten

8

Betrachten Sie Logback Ссылка - "ein Nachfolger des beliebten log4j-Projekts, wo Log4j aufhört". Wenn Sie dazu aufgefordert werden, sucht Logback-classic nach Änderungen in der Konfigurationsdatei und konfiguriert sich automatisch neu, wenn sich die Konfigurationsdatei ändert. Außerdem können Sie Logging-Ebenen mit JMX steuern.

    
Evgeniy Dorofeev 18.11.2012, 18:42
quelle
9

Es ist nicht möglich, die Protokollierungsstufe dynamisch in slf4j zu ändern, aber einige Backends für slf4j unterstützen dies, einschließlich log4j.

Diese Lösung hat für mich funktioniert:

%Vor%

(Quelle: Ссылка )

Der Nachteil dieser Lösung ist, dass sie das Backend direkt verwendet, was Sie bei der Verwendung von slf4j nicht tun sollten, weil der Sinn von slf4j darin besteht, eine Abstraktion von dem spezifischen Backend, das Sie verwenden, zu bieten.

    
outofthecave 12.03.2016 18:43
quelle
3

Ich musste das einmal mit log4j machen. Der einzige Weg, wie ich es herausfinden konnte, war, GetAllAppenders auf dem Logger-Objekt. Dann durchlaufen Sie die Appender. Wenn sie die AppenderSkeleton-Klasse erweitern (sie sollten), haben sie die setThreshold -Methode. Rufen Sie diese Methode mit Ihrer neuen Ebene als Parameter auf. Nachfolgende Aufrufe an den Logger sollten die neue Ebene verwenden. Dadurch wird die Ebene im Speicher festgelegt, jedoch nicht in Ihrer log4j-Konfigurationsdatei. Sie können dies auch tun, es sei denn, es wird automatisch geändert, wenn der Administrator den Level über das Frontend ändert. Wenn es eine Option ist, sollten Sie Evgeniy Dorofeevs Rat befolgen und Logback verwenden. Es klingt, als wäre es einfacher.

    
David A 18.11.2012 19:29
quelle

Tags und Links