/ / So ändern Sie den Protokolliergrad in log4j2 während der Programmausführung

So ändern Sie den Protokolliergrad in log4j2 während der Programmausführung - java, log4j2

Bitte korrigieren Sie mich, wenn ich falsch liege, aber es scheint daslog4j2.xml muss sich im Klassenpfad des Programms befinden, und alles, was sich im Klassenpfad befindet, wird in eine JAR-Datei verpackt, wenn Sie eine eigenständige ausführbare JAR-Datei des Programms erstellen.

Wenn dies der Fall ist, kann die XML-Datei nicht seingeändert, nachdem das Programm in die JAR-Datei exportiert wurde. Es scheint also nicht möglich zu sein, die Protokollierungsstufe zu ändern, ohne das Programm erneut zu exportieren.

Bitte sagen Sie mir, dass ich bei diesem und jenem Unrecht habeEs gibt eine Möglichkeit, die Protokollierungsstufe zu ändern, während das Programm ausgeführt wird, indem Sie beispielsweise eine Dropdown-Liste in JFrame verwenden, sodass der Benutzer die Protokollierungsstufe auswählen kann.

Antworten:

0 für die Antwort № 1

Ich habe das in der Vergangenheit benutzt

LogManager.getRootLogger().setLevel(Level.DEBUG);

Sie können auf diese Weise zu jeder Protokollstufe wechseln.


0 für die Antwort № 2

Sie können die Protokollierstufe mithilfe des in der Bibliothek enthaltenen Java Management Extensions Bean (JMX Bean) ändern:

  1. Aktivieren Sie den JMX-Port in Ihrem Anwendungsstart:

    -Dcom.sun.management.jmxremote.port = [port_num]

  2. Verwenden Sie bei der Ausführung Ihrer Anwendung einen der verfügbaren JMX-Clients (die JVM stellt einen in JAVA_HOME / bin / jconsole.exe bereit).

  3. Suchen Sie in JConsole nach der Bean "org.apache.logging.log4j2.Loggers"

  4. Ändern Sie die Stufe Ihres Loggers

Was mir am meisten gefällt, ist, dass Sie Ihren Code oder Ihre Konfiguration nicht ändern müssen, um dies zu verwalten. Es ist alles äußerlich und transparent.

Mehr Info: http://logging.apache.org/log4j/2.x/manual/jmx.html