6

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

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

4

4 回答 4

6

在 Grails 1 和 2 中,有一个在开箱即用的 webapp 中配置和使用的日志记录 DSL,因此您需要log4j = { ... }grails-app/conf/Config.groovy

如果您想像在典型的 Java Web 应用程序中那样使用外部配置文件进行日志记录,请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
于 2012-05-22T18:12:46.633 回答
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)。
于 2009-02-06T01:24:45.817 回答
3

查看Log4J Plugin其中状态:

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

我自己没有使用过它,所以无法说明它在 WAR 上下文中的可用性。只需 WAR 启动您的应用程序,然后尝试一下。它应该位于 WEB-INF 文件夹下的某个明显位置。如果这不起作用,grails 用户列表上的Mingfai可能会帮助您。

于 2009-02-06T01:00:22.920 回答
0

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

于 2009-10-19T08:36:20.483 回答