【问题标题】:Using external log4j.properties file with Grails在 Grails 中使用外部 log4j.properties 文件
【发布时间】:2012-05-23 02:12:46
【问题描述】:

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

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

【问题讨论】:

  • 我今天重温了这篇文章,发现this blog post 提供了一种使用 Spring 的 Log4jConfigurer bean 执行此操作的方法。如果我有机会尝试一下,我可能会发布答案。

标签: grails log4j


【解决方案1】:

在 Grails 1 和 2 中,有一个 logging DSL 在开箱即用的 web 应用程序中配置和使用,因此您需要从 grails-app/conf/Config.groovy 中删除 log4j = { ... } 代码

如果您想像在典型的 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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      查看Log4J Plugin 声明:

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

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

      【讨论】:

      • +1 这是一个合理的解决方案,但不太适合我,因为我使用的是 Grails 1.0.3(该插件仅适用于 1.1)。不过,这是一个有用的答案。谢谢。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2021-11-17
        • 1970-01-01
        • 1970-01-01
        • 2016-12-15
        • 2014-03-14
        • 2016-12-03
        • 2013-01-28
        • 2016-03-15
        • 1970-01-01
        相关资源
        最近更新 更多