2011-11-08 80 views
0

我一直在開發一個簡單的Spring MVC應用程序作爲報告服務。在本地,我一直在使用maven-tomcat-plugin運行應用程序,使用mvn tomcat:run。這完全按照預期工作。不過,我現在想這個服務部署到運行Tomcat 6,我的戰爭文件加載到webapps目錄下,Tomcat注意到它,部署它的服務器,然後抱怨:Tomcat上的Spring MVC應用程序的Log4j配置

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

您確認屬性文件位於war文件的'/ WEB-INF/classes'中嗎? –

回答

2

在mvn生命週期的compile階段,Maven會將資源文件/src/main/resources複製到/WEB-INF/classes。使用命令mvn war:war將不會複製這些資源,因此您必須執行mvn compile war:war以使資源可用於您的應用程序。

1

我相信log4j.properties文件需要在類路徑中,如果你想它被自動拾取。我通常將它放在Tomcat的Lib文件夾或war的lib文件夾中。

+0

我試過把它放在src/main/webapp/WEB-INF/lib中,但它似乎沒有工作,所以繼續沿着這條路徑(這對我來說確實有點味道),我熱複製了bundle到'WEB-INF/classes /'目錄中。當我做到這一點時,tomcat發現捆綁就好了。奇怪的? – idbentley

+0

src樹中的目錄不在WAR文件的類路徑中。 – DwB

+0

@DwB這是一個Maven項目; '/ src/main/resources'中的資源被複制到類目錄中。 –

相關問題