如何配置Grails插件来覆盖“父”应用程序的Log4J设置?

时间:2014-05-14 16:17:22

标签: grails configuration log4j grails-plugin

我正在编写一个Grails插件,它将强加非常具体的log4j设置(在它自己的log4j.xml中),我想配置它使得使用这个插件的应用程序被迫使用插件的log4j配置(而不是应用程序本身定义的任何log4j配置)。

例如,假设我希望插件强制所有下游Grails应用程序登录到名为/var/log/fizz.log的文件。我怎么能做这个工作?

更新:如果插件无法覆盖使用它的应用程序,那么至少我需要应用程序能够使用插件的log4j配置而无需定义它自己的。

1 个答案:

答案 0 :(得分:2)

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

但是,您始终可以从应用程序的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"
      }
  ...
}
...