每当我部署一个出现externalized configuration错误的生产应用程序时,我都会在Tomcat日志中收到以下消息:
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之前处理外部化配置,因此没有可用于接受来自ConfigurationHelper
的消息的appender。
有没有办法在标准Grails log4j初始化发生之前预先初始化log4j以捕获这些消息?
答案 0 :(得分: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
或外部配置文件中的设置覆盖了这些初始设置。
我的外部配置文件具有不正确的权限,无法加载。
答案 1 :(得分:0)
This blogger建议检查web.xml
以确保首先列出log4j
侦听器。在WAR创建过程中,Grails会生成web.xml
,但值得一看。