log4j-Konfigurationsdatei
Habe ich einige Projekte, eingebettet in eine web-app als Gläser. Jedes Projekt hat eine log4j.Eigenschaften-Datei. Wenn die web-app ist deloyed, welche Konfigurationsdatei verwendet wird und wie das überschreiben der Konfiguration in log4j.xml in einer jar-Datei. Die Gläser sind nicht web-Projekte. Sie sind eher wie die service-Ebene code. Was ist die Reihenfolge, in der die log4j.properties-Datei geladen wird in der unten Szenario
Web-project
classes
log4j.properties
ProjectB.jar
com
log4j.properties
ProjectC.jar
com
log4j.properties and so on.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihre Gläser sind separate web-Anwendungen web-Anwendung sollten die es findet zuerst im classpath (WEB-INF/classes).
Können Sie ein -Dlog4j.Konfiguration=Dateipfad einstellen, um z.B. den tomcat starten, um sicherzustellen, dass es die eine, die Sie beabsichtigen, es zu verwenden.
Allerdings würde dann nach meinem Verständnis und wissen sein, die tomcat für jede webapp bereitgestellt wird.
Frage ist hier, wie Sie das bereitstellen Ihrer apps. Entweder alle web-Anwendungen in einem tomcat in diesem Fall werden Sie wahrscheinlich wollen, dass jede web-Anwendung für die Verwendung eines anderen log4.Eigenschaften (bzw. log4j.xml) oder in den Fällen, in denen Sie angeben, ein tomcat, verwendet werden sollen, die Sie angeben.
Was es läuft darauf hinaus, soweit ich weiß: Entweder das erste Gefundene auf-classpath (denken Sie daran: jede web-app hat seine eigenen classpath) oder die, die Sie angeben, über den-D Einstellung.
Gerade diese Referenz, die ich denke, gut zusammengefasst, die wichtigsten Konzepte von logging im tomcat-webapps eingesetzt tomcat: http://wiki.apache.org/tomcat/FAQ/Logging
Wenn Sie Sie brauchen noch mehr Kontrolle über das log4j-logging können Sie resort zur Codierung der log4j-Konfiguration in java. Dies würde jedoch bedeuten, dass Sie den Quellcode ändern und hinzufügen von code, die sich auf die Infrastruktur und die Bereitstellung bezieht sich die details zu Ihrer Anwendung (nicht so schön).
Wenn Sie additivität auf false in common-Pakete an ProjectA, ProjectB und Webprojekt dein log nicht doppelt.
log4j.additivität.[angemeldet-Paket] = false
Beispiel:
log4j.properies -> Projekt A, Projekt B
log4j.additivität.org.Frühling.Rahmen = false
Alle org.Frühling.framework-Protokoll wird von Webprojekt zu ignorieren ProjectA und ProjectB.