使用带有Grails的外部log4j.properties文件

时间:2009-02-05 22:25:22

标签: grails log4j

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

我也很好奇外部配置是否会与grails war创建的log4j.properties文件很好地匹配并放入war文件中。如果从Config.groovy中删除log4j配置,log4j.properties是否仍会被放入war文件中?

4 个答案:

答案 0 :(得分:6)

在Grails 1和2中,有一个logging DSL已经配置并在开箱即用的webapp中使用,因此您需要从{{1}中删除log4j = { ... }代码}}

如果要像在典型的Java Web应用程序中那样使用外部配置文件进行日志记录,请使用以下内容更新文件grails-app/conf/Config.groovy

grails-app/conf/spring/resources.groovy

请注意,Log4j appender配置中使用的软件包名称可能不符合您的预期,因为它会在其上添加Grails特定的前缀...

beans = {
    log4jConfigurer(org.springframework.beans.factory.config.MethodInvokingFactoryBean) {
        targetClass = "org.springframework.util.Log4jConfigurer"
        targetMethod = "initLogging"
        arguments = ["classpath:log4j.properties"]
    }
}

答案 1 :(得分:4)

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

  • 将War.groovy从$ GRAILS_HOME / scripts复制到$ APP / scripts
  • 评论复制的War.groovy
  • 的第145和154行
  • 将您的log4j.properties放入$ APP / grails-app / conf
  • 运行$ grails war,它会提示您选择要运行的War脚本,然后选择您当地的脚本(通常为#1)。

答案 2 :(得分:3)

查看Log4J Plugin说明:

“即使配置文件要大得多,一些老式的Java开发人员对log4j.xml更为满意。这个插件提供了一种禁用默认Log4j DSL并允许以原始形式使用log4j.xml的方法,或者用Groovy MarkupBuilder风格。“

我自己没有使用它,所以不能说它在WAR上下文中的可用性。只需加强你的应用程序,然后试一试..它应该在WEB-INF文件夹下某处显而易见。如果这不起作用, grails user list 上的 Mingfai 可能会帮助你。

答案 3 :(得分:0)

至少在1.0.x系列中(未在1.1中检查过)忘记Grails支持并直接依赖Spring。只需使用web.xml中的log4jConfigLocation参数即可。更多信息here