我正在编写一个Grails插件,它将强加非常具体的log4j设置(在它自己的log4j.xml
中),我想配置它使得使用这个插件的应用程序被迫使用插件的log4j配置(而不是应用程序本身定义的任何log4j配置)。
例如,假设我希望插件强制所有下游Grails应用程序登录到名为/var/log/fizz.log
的文件。我怎么能做这个工作?
更新:如果插件无法覆盖使用它的应用程序,那么至少我需要应用程序能够使用插件的log4j配置而无需定义它自己的。
答案 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"
}
...
}
...