我有一个使用SLF4J日志记录外观的Java Web应用程序。到目前为止,我们使用下面的Log4J实现(虽然我们正在考虑切换到Logback)。 Log4J当前通过log4j.xml配置文件进行配置,该文件位于类路径的根目录中。
无论如何,我们使用JNDI配置应用程序的其他方面,因此我非常熟悉如何设置它并将字符串从JNDI拉入Spring配置文件。
但是,我无法弄清楚如何在Spring配置文件中创建Log4J appender。更好的是,可以通过Spring完全配置Log4J并完全跳过log4j.xml配置文件吗?我希望我不必以编程方式执行此操作。
我发现了一个名为Log4jWebConfigurer
的Spring类,但是这需要WAR运行爆炸(如果我能帮助它就不希望这样),并且日志文件也位于web-app目录中(绝对不要不想要的。)
答案 0 :(得分:2)
首先通过JNDI获取主目录:
<jee:jndi-lookup id="myAppHome" jndi-name="myAppHome" />
然后以下列方式在Spring Expression Language语句中使用该bean:
<bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<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>