将外部log4j.properties文件与Grails一起使用

将外部log4j.properties文件与Grails一起使用,grails,log4j,Grails,Log4j,在Grails中使用外部log4j.properties文件的最佳方式是什么?我希望使用传统的log4j.properties格式,而不是log4j.groovy样式的配置 我还想知道外部配置是否能很好地处理由grailswar创建并放入war文件的log4j.properties文件。如果我从Config.groovy中删除log4j配置,log4j.properties还会被放入war文件吗?请查看以下状态: “一些老式Java开发人员对log4j.xml更为熟悉,尽管配置文件要大得多。此插

在Grails中使用外部log4j.properties文件的最佳方式是什么?我希望使用传统的log4j.properties格式,而不是log4j.groovy样式的配置

我还想知道外部配置是否能很好地处理由
grailswar
创建并放入war文件的log4j.properties文件。如果我从Config.groovy中删除log4j配置,log4j.properties还会被放入war文件吗?

请查看以下状态:

“一些老式Java开发人员对log4j.xml更为熟悉,尽管配置文件要大得多。此插件提供了一种禁用默认log4j DSL的方法,并允许以原始格式或Groovy MarkupBuilder样式使用log4j.xml。”


我自己也没用过,所以不能说它在战争环境中的可用性。。只需对你的应用程序进行升级,然后进行试用。。它应该在WEB-INF文件夹下的某个明显的地方。如果这不起作用,上的Mingfai可能会帮助您解决问题。

如果您使用的是1.0.x系列:

  • 将War.groovy从$GRAILS\u HOME/scripts复制到$APP/scripts
  • 注释掉复制的War.groovy的第145行和第154行
  • 将log4j.properties放入$APP/grails-APP/conf中
  • 运行$grailswar,它将提示您选择要运行的war脚本,然后选择本地脚本(通常为#1)

至少在1.0.x系列中(在1.1中未选中)忘记Grails支持,直接依赖Spring。只需在web.xml中使用log4jconfig参数。更多信息

在Grails1和2中,有一个在开箱即用的webapp中配置和使用的,因此您需要从
GrailsApp/conf/Config.groovy
中删除
log4j={…}
代码

如果希望使用外部配置文件进行日志记录,就像在典型的JavaWeb应用程序中一样,那么使用以下命令更新文件
grails-app/conf/spring/resources.groovy

beans = {
    log4jConfigurer(org.springframework.beans.factory.config.MethodInvokingFactoryBean) {
        targetClass = "org.springframework.util.Log4jConfigurer"
        targetMethod = "initLogging"
        arguments = ["classpath:log4j.properties"]
    }
}
请注意,Log4j appender配置中使用的包名可能不是您所期望的,因为它将添加一个特定于Grails的前缀

WARN grails.app.controllers.org.example.BookController - This is a warn log message from BookController
ERROR grails.app.controllers.org.example.BookController - This is an error log message from BookController

+1这是一个合理的解决方案,但对我来说不太合适,因为我使用的是Grails1.0.3(该插件只适用于1.1)。不过,这是一个有用的答案。谢谢。我今天再次访问了它,发现它提供了一种使用Spring的Log4JConfigureBean实现这一点的方法。如果我有机会尝试一下,我可能会发布一个答案。