我一直在开发一个简单的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
并获得适当的结果来确认这个假设。什么是类路径上的正确位置,但不是在一个奇怪的位置?
感谢任何指导。
答案 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文件夹中。