log4j mehrere Konfigurationsdateien

9

Ich habe einige Projekte in einer Web-App als Gläser eingebettet. Jedes Projekt hat eine log4j.properties-Datei. Wann wird die Webanwendung gelootet, welche Konfigurationsdatei wird verwendet und wie werden die Konfigurationen in log4j.xml in einer JAR-Datei überschrieben? Die Gläser sind keine Webprojekte. Sie sind eher wie Service-Layer-Code. In welcher Reihenfolge wird die Datei log4j.properties im folgenden Szenario geladen

%Vor%     
user373201 07.11.2011, 21:37
quelle

2 Antworten

5

Wenn Ihre jars separate Webanwendungen sind, sollte jede Webanwendung diejenige verwenden, die sie zuerst im Klassenpfad findet (WEB-INF / classes).

Sie können eine Einstellung -Dlog4j.configuration = path_to_file an z. der Tomcat-Start, um sicherzustellen, dass es den verwendet, den Sie verwenden möchten. Dies wäre jedoch nach meinem Verständnis und Wissen dasjenige, das Tomcat für jede eingesetzte Webanwendung verwendet.

Hier stellen Sie die Frage, wie Sie Ihre Apps bereitstellen. Entweder alle Webanwendungen in einem Tomcat. In diesem Fall möchten Sie wahrscheinlich, dass jede Webanwendung eine andere log4.properties (oder log4j.xml) verwendet. Wenn Sie eine Tomcat angeben, sollte sie die von Ihnen angegebene Webanwendung verwenden.

Worauf es hinausläuft, soweit ich weiß: Entweder das erste, das im Klassenpfad gefunden wurde (denken Sie daran: jede Web-App hat ihren eigenen Klassenpfad) oder das, das Sie über die Einstellung -D angeben.

Ich habe gerade diese Referenz gefunden, die meiner Meinung nach die wichtigsten Konzepte der Anmeldung von Tomcat- und Webapps in Tomcat zusammenfasst: Ссылка

Wenn Sie noch mehr Kontrolle über die Log4j-Protokollierung benötigen, können Sie die log4j-Konfiguration in Java codieren. Das würde jedoch bedeuten, dass Sie den Quellcode ändern und Code hinzufügen müssen, der sich auf die Infrastruktur bezieht und die Bereitstellungsdetails auf Ihre Anwendung bezieht (nicht so nett).

    
mkro 07.11.2011 21:47
quelle
-1

Wenn Sie in ProjectA, ProjectB und WebProject in allgemeinen Paketen die Additivität auf false setzen, wird Ihr Protokoll nicht dupliziert.

log4j.additivity [protokolliertes Paket] = false

Zum Beispiel:

log4j.properies - & gt; Projekt A, Projekt B

log4j.additivity.org.spring.framework = false

Das gesamte org.spring.framework-Protokoll wird von WebProject stammen, das ProjectA und ProjectB ignoriert.

    
kauedb 28.02.2014 21:13
quelle

Tags und Links