Wie für die Verwendung mehrerer Konfigurationsdateien für log4j2
Ich Schreibe Java-code, dass die tests auf einer Java-Bibliothek. Die Bibliothek enthält einen eigenen log4j2-Konfiguration als Teil der distribution.
Ich möchte mit log4j2 in meinem test-code verändern, ohne die library-Konfiguration.
Gibt es eine Möglichkeit, eine separate log4j2 Konfiguration für meinen test-code?
Ist dies alles läuft als Kommandozeilen-Java, keine Server-oder web-Engagement auf allen.
BEARBEITEN, um zu versuchen, um deutlicher zu sein:
Was ich will ist, um in der Lage zu konfigurieren-Logger, appenders, etc für den test-code zu verwenden , und gleichzeitig haben, der code der Bibliothek verwenden seine eigene separate Konfigurationsdatei für seine Anmeldung. Die Idee ist die Verwendung von log4j2 in meinem test-code, aber ohne Wechsel der Bibliothek Konfigurationsdatei. Da die library-Konfiguration-Datei, die Teil der Bibliothek ist die Verbreitung, ich will nicht zu ändern, es zu testen.
- Log4j-Konfiguration lädt Dateien aus dem Klassenpfad. Wenn Sie den test-code classpath vor der Bibliothek classpath die log4j-Konfiguration sollte man aus dem test-code. Hier ist ein link stackoverflow-Frage, die hilfreich sein können.
- Danke für die Antwort, Alexey, aber ich glaube, ich war nicht klar genug in meiner Frage. Ich habe bearbeitet es, um zu versuchen, um deutlicher zu sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser hilfreich sein kann:
Also eine Möglichkeit ist, kopieren Sie die library-Konfiguration (log4j2.xml) zu log4j2-test.xml und fügen Sie Ihre eigenen Konfiguration log4j2-test.xml.
Darüber hinaus Log4j2 unterstützt XInclude in XML-Konfiguration, so könnte man dieses feature verwenden, um zu vermeiden, duplizieren der Bibliothek-Konfiguration in Ihrer log4j2-test.xml.
Log4j2 unterstützt "Verbund-Konfiguration" die exakt auf Ihre Anforderung. Alles, was Sie tun müssen, ist geben Weg, um mehrere Dateien in
log4j.configurationFile
Eigenschaft. Diese übergeben werden können von der Kommandozeile oder Hinzugefügtlog4j2.component.properties
- Datei in Ihrer Anwendung.Referenzen:
https://logging.apache.org/log4j/2.x/manual/configuration.html#CompositeConfiguration
https://logging.apache.org/log4j/2.x/manual/configuration.html#SystemProperties
Gibt es zwei Schritt können Sie versuchen, Sie zu lösen für Ihr Problem
Wenn Sie verwenden unterschiedliche Namen für die Konfiguration eher log4j.properties/.xml die Datei, die Sie konfigurieren müssen, dass die Datei zur Laufzeit durch den oben genannten Befehl für mehr info schauen Sie hier ...
Richtige format für die Verwendung eines alternativen XML-Datei log4j2.xml:
java -Dlog4j.configurationFile=./location/log4j2-custom.xml
Vorausgesetzt
./location/log4j2-custom.xml
vorhanden ist und die neue XML zu ersetzen log4j2.xml in diesem LaufFinden Sie unter:
https://github.com/kamalcph/Log4j2Examples/blob/master/src/main/java/in/co/nmsworks/log4j2/examples/CompositeConfigurationExample.java
Verweisen auf https://logging.apache.org/log4j/2.x/manual/configuration.html besagt, dass Sie können mehrere durch Komma getrennte Dateien unter log4j2.configurationFile-Eigenschaft.