2

每当我部署具有外部化配置错误的生产应用程序时,我都会在 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.

有没有办法在标准 Grails log4j 初始化发生之前预先初始化 log4j 以捕获这些消息?

4

2 回答 2

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文件中。

Config.groovyGrails 初始化确实使用来自或外部配置文件的设置覆盖了这些初始设置。

我的外部配置文件权限不正确,无法加载。

于 2012-05-23T22:06:17.003 回答
0

这位博主建议检查web.xml以确保log4j首先列出了听众。Grailsweb.xml在 WAR 创建过程中生成,但可能值得一看。

于 2014-03-31T02:45:30.660 回答