grails - 如何配置Grails插件以覆盖 “parent”应用程序的Log4J设置?

标签 grails configuration log4j grails-plugin

我正在编写一个Grails插件,该插件将具有非常特定的log4j设置(以其自己的log4j.xml表示),并且我希望对其进行配置,以便使用该插件的应用程序被迫使用该插件的log4j配置(而不是任何log4j配置该应用本身已定义)。

例如,假设我希望插件强制所有下游Grails应用程序登录到名为/var/log/fizz.log的文件。我该如何进行这项工作?

更新:如果该插件不可能覆盖使用它的应用程序,那么至少我需要该应用程序能够使用该插件的log4j配置,而不必定义其自身。

最佳答案

首先,应用程序配置设置将始终胜过插件设置。就我所知,你无法避免。

但是,您始终可以从应用程序的config.groovy中删除log4j配置,并在插件生命周期的doWithSpring事件内将插件连接到log4j配置中。这将确保该插件负责配置log4j。

我将假设您不需要任何连接log4j.xml部分的帮助,因为您没有对此进行询问。以防万一,看起来可能像这样:

MyLoggingPlugin.groovy

...
def doWithSpring = {
  ...
      log4jConfigurer(org.springframework.beans.factory.config.MethodInvokingFactoryBean){
        targetClass = "org.springframework.util.Log4jConfigurer"
        targetMethod = "initLogging"
        arguments = "path/to/log4j.xml"
      }
  ...
}
...

关于grails - 如何配置Grails插件以覆盖 “parent”应用程序的Log4J设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23660006/

相关文章:

rest - 其余资源的 Grails spring-security 静态规则似乎无法正常工作

java - GORM 属性和 Postgres 字段是域数据类型

spring - bean 类 [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean] 的无效属性 'packagesToScan'

java - 如何在 log4j 中获得不同的记录器?

grails - DWR是否启用了grails登录?

java - 在 jsp 页面中使用 log4j 的正确方法是什么

web-services - 用grails调用Web Services的异常

grails - 无法访问Spring Security UI?

java - log4j:记录一个包,但不包括它的子包

mysql - 将 skip-grant-tables 添加到 MySQL my.ini 似乎不起作用