2012-05-23 46 views
2

每當部署具有帶有externalized configuration我在Tomcat日誌中收到以下信息的錯誤生產應用程序:Grails的外部配置測井

log4j:WARN No appenders could be found for logger (org.codehaus.groovy.grails.commons.cfg.ConfigurationHelper) 
log4j:WARN Please initialize the log4j system properly.              
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.       

顯然外向配置之前加工成的log4j被正確初始化和因此沒有appender可以接受來自ConfigurationHelper的消息。

有沒有辦法在標準的Grails log4j初始化發生之前預先初始化log4j來捕獲這些消息?

+0

你在和我一樣的同一天打這個。我還沒有給你答案,但如果我找到答案,我會發布。這是你在那裏做的一些很好的診斷挖掘。謝謝。我可以假設你正在用Grails 2.0.3來做這件事嗎? – mgkimsal

+0

@mgkimsal是的,我在Grails 2.0.3中遇到了這個問題。 – jamesallman

+0

我現在有點不同了,但還是破了。 配置Spring Security的用戶界面... ... 完成配置Spring Security的UI 配置Spring Security的核心... ... 完成配置Spring Security的核心 2012年5月23日5時21分07秒PMorg。 apache.catalina.core.StandardContext start SEVERE:Error listenerStart 沒有任何內容在stacktrace.log文件中。 :/ 順便說一句,剛試過grails 2.0.4,同樣的行爲。 2.0.4更改日誌引用配置中沒有任何內容,但我認爲我會嘗試。 – mgkimsal

回答

5

我終於能在$CATALINA_BASE\lib\log4j.properties創建一個文件,使預初始化日誌記錄:

log4j.rootLogger=WARN, CA               
log4j.appender.CA=org.apache.log4j.ConsoleAppender         
log4j.appender.CA.layout=org.apache.log4j.PatternLayout        
log4j.appender.CA.layout.ConversionPattern=%d{MMM dd, yyyy hh:mm:ss aa} %c%n%p: %m%n 

這使得最初的消息被記錄到控制檯。在默認的Tomcat配置中,它們將被記錄到$CATALINA_BASE\logs\catalina.out文件中。

Grails初始化確實覆蓋了這些初始設置,其設置來自Config.groovy或外部配置文件。

我的外部配置文件的權限不正確,無法加載。

+0

什麼是'正確'的權限呢?我可讀 - *屬性*文件似乎得到解析,但不* groovy *配置文件。 – mgkimsal

+0

@mgkimsal在我的情況下,當我複製文件時,配置文件將所有者從Tomcat用戶標識更改爲我的用戶標識。由於權限是rwx ------它甚至無法打開文件。 – jamesallman

0

This blogger建議檢查web.xml以確保log4j聽衆首先被列出。在WAR創建過程中,Grails會生成web.xml,但它可能值得一看。