2012-05-23 47 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,但它可能值得一看。