Tomcat上Spring MVC app的Log4j配置

时间:2011-11-08 16:07:41

标签: java spring tomcat log4j

我一直在开发一个简单的Spring MVC应用程序作为报告服务。在本地,我一直使用maven-tomcat-plugin运行应用程序,使用mvn tomcat:run。这完全符合预期。但是,我现在正在尝试将此服务部署到运行Tomcat 6的服务器上。我将war文件加载到webapps目录中,Tomcat注意到它,部署它,然后抱怨:

log4j:WARN No appenders could be found for logger
(org.springframework.web.filter.CharacterEncodingFilter).

log4j:WARN Please initialize the log4j system properly.

并且,毫不奇怪,没有记录该服务。

以上错误信息对我来说并不清楚,我想知道是否有人可以给我一些帮助。

对于后代,我有一个非常简单的log4j.properties文件(住在/src/main/resources):

log4j.rootLogger=WARN, console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern= %d{HH:mm:ss,SSS} [%t] %-5p %x %C{1} : %m%n

log4j.logger.com.rtr=DEBUG

我目前的假设是tomcat框可能根本没有看到这个属性包,但我不确定。我能够通过将包热拷贝到WEB-INF/classes并获得适当的结果来确认这个假设。什么是类路径上的正确位置,但不是在一个奇怪的位置?

感谢任何指导。

2 个答案:

答案 0 :(得分:2)

Maven在mvn生命周期的/src/main/resources阶段将资源文件从/WEB-INF/classes复制到compile。使用命令mvn war:war将不会复制这些资源,因此您必须mvn compile war:war才能使应用程序可以使用这些资源。

答案 1 :(得分:1)

我相信log4j.properties文件需要在类路径中才能自动获取。我通常把它放在Tomcat的Lib文件夹或war的lib文件夹中。