我正在编写一个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/