Ich verwende JBoss 4.2.3.GA und habe eine Webanwendung, die Spring und Log4j verwendet. Ich habe Spring's Log4jConfigurer eingerichtet, habe aber ein Problem, da sich die log4j-Datei von JBoss nicht im Klassenpfad befindet. Es ist bei jboss.home/server/defaul/conf/jboss-log4j.xml. Also, ohne den Pfad in Log4jConfigurer fest zu codieren, wie kann ich Spring dazu bringen, die log4j-Datei von JBoss zu verwenden?Spring, log4j und JBoss4
Antwort
Sie ändern nicht im Allgemeinen JBoss Log4j Config über die Anwendungen, das ist eine Route zum Wahnsinn. JBoss verwendet eine gemeinsame Konfiguration unter allen Apps.
Sie kann jedoch programmgesteuert die Laufzeitkonfiguration von log4j ändern, z. B. benutzerdefinierte Appender oder Protokollierer hinzufügen. Dafür ist Log4jConfigurer von Spring jedoch nicht zuständig - Sie verwenden das, um eine eigenständige log4j-Konfiguration zu konfigurieren.
Richtig, ich versuche, meine eigene log4j.xml-Datei zu vermeiden und benutze nur jboss-jboss-log4j.xml und modifiziere sie, indem ich Appender und Kategorien hinzufüge. Das mache ich mit der Hand. Nun möchte ich, dass meine Web-App diese Datei liest, oder vielmehr möchte ich, dass meine Web-Anwendung Spring (über Log4jConfigurer) sagt, dass sie diese Datei lesen und für ihre Konfiguration verwenden soll. –
Jede in JBoss implementierte Anwendung verwendet automatisch ihre log4j-Konfiguration. Verwenden Sie einfach log4j von Ihrer App, und es sollte einfach funktionieren. Die App muss log4j nicht selbst konfigurieren. – skaffman
Normalerweise ist das der Fall. Mit Spring gibt es jedoch ein Problem. Ich glaube, es liegt daran, dass sich eine log4j.xml in den Dateien von spring.jar befindet. Daher müssen Sie Spring mitteilen, dass es sich an einem anderen Ort für die Konfiguration befindet. Siehe http://firstpartners.net/kb/index.php/Spring_Pointer_to_Log4j_Configuration_File –
Beantworten Sie Ihre Frage: JBoss legt normalerweise zusätzliche Systemeigenschaften fest, die auf das Serververzeichnis und die Konfigurationsverzeichnisse verweisen. Sie sollten in der Lage sein, über Ihre Anwendung auf diese zuzugreifen oder sie aus den Spring-Kontexten lösen zu lassen.
In Ihrem Fall, sollte es in Ordnung sein für den Zugriff auf ${jboss.server.home.dir}/conf/jboss-log4j.xml
Wie skaffman korrekt in einem Kommentar darauf hingewiesen, besteht keine Notwendigkeit Frühling zu konfigurieren ist JBoss' log4j Konfiguration zu lesen, wenn Sie sonst etwas in der Verpackung angepasst hat . Sie müssen nur darauf achten, dass sich kein log4j.[properties,xml]
irgendwo im Stamm des Klassenpfads befindet oder dass eine Komponente versucht, Log4J "manuell" zu konfigurieren.
Hope this helfen könnte,
Kariem
Ich verwende: –
Haben Sie jemals eine Lösung gefunden? –