Ich habe eine Webanwendung, die die Log4jConfigurer
-Klasse von Spring verwendet, um meine Log4J-Protokollfactory zu initialisieren. Im Grunde initialisiert es Log4J mit einer Konfigurationsdatei, die nicht im Klassenpfad ist. HierLog4J mit Feder initialisieren?
ist die config:
<bean id="log4jInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="sbeHome">
<property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
<property name="targetMethod" value="initLogging" />
<property name="arguments">
<list>
<value>#{ MyAppHome + '/conf/log4j.xml'}</value>
</list>
</property>
</bean>
Jedoch habe ich diesen Fehler beim Start der Anwendung erhalten:
log4j:WARN No appenders could be found for logger
und Tonnen von Spring-Anwendungskontext Initialisierungsmeldungen auf die Konsole ausgegeben werden. Ich denke, dies liegt daran, dass Spring meine Anwendung initialisiert, bevor es die Möglichkeit hat, meinen Logger zu initialisieren. Falls es darauf ankommt, verwende ich SLF4J zusätzlich zu Log4J.
Gibt es eine Möglichkeit, wie ich meinen Log4jConfigurer als erste Bean initialisieren kann? Oder gibt es einen anderen Weg, dies zu lösen?
Ich hätte erwähnen sollen, dass mein Pfad zur log4J-Eigenschaftendatei von einem JNDI-String kommt. Wie kann ich diesen JNDI-Wert an liefern. Wenn ich das tun könnte, denke ich, dass ich fertig bin. –
HDave
Ich habe dies gefunden: http://www.codeanch.com/t/362833/Servlets/java/log-ServletContextListener - es zeigt, wie Sie Ihre eigenen Log4j Konfiguration Listener implementieren, die einige Informationen von JNDI – Ralph
Ich habe meine eigenen erstellt Servlet Context Listener wie sie es taten und alles funktioniert perfekt. Vielen Dank. – HDave