在春天我与log4j的SLF4J解决日志记录。设置log4j的文件路径PARAM
我把相对路径中的log4j.xml配置,但是当我在Netbeans的Tomcat和独立的Apache Tomcat执行的应用程序,相对路径是不同的,我必须手动更改。
我的想法是从春天控制器获得真实路径的上下文和执行时间,将其设置为log4j的配置。但我不知道......
我怎样才能改变log4j的文件路径PARAM从春季控制器?
在春天我与log4j的SLF4J解决日志记录。设置log4j的文件路径PARAM
我把相对路径中的log4j.xml配置,但是当我在Netbeans的Tomcat和独立的Apache Tomcat执行的应用程序,相对路径是不同的,我必须手动更改。
我的想法是从春天控制器获得真实路径的上下文和执行时间,将其设置为log4j的配置。但我不知道......
我怎样才能改变log4j的文件路径PARAM从春季控制器?
两个建议你去尝试:
添加WebAppRootListener到你的web.xml - 这将配置系统属性指向(默认为webapp.root
,但你可以自定义使用的context-param - 请参阅Javadoc链接)到您的Web应用程序的根目录,然后你就可以在log4j.properties/xml文件中使用:
<listener>
<listener-class>org.springframework.web.util.WebAppRootListener<listener-class>
<listener>
<!-- log4.appender.File=${webapp.root}/logs/web-app.log -->
或者在web.xml使用Log4jConfigListener(最终委托给Log4jConfigurer) - 这是类似于上面的,但是可以让你定义一个自定义的log4j conf IGU文件,也允许Web应用程序来监控在运行时所做的更改log4j的配置文件,并自动更新您的记录器:
<context-param>
<!-- Configure Log4J from the following config file location -->
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener<listener-class>
<listener>
我也建议你详细阅读的Javadoc以上 - 有一些关于在Tomcat中部署多个webapps以及共享系统属性的疑问,但这可以全部解决(为每个webapp提供一个自定义密钥,而不是默认的${webapp.root}
Nice Chris,工作正常!谢谢! :) – Dani 2012-04-11 07:21:48