Grails应用程序中的log4j.xml放在哪里?
有时我会在Grails应用程序的Grails应用程序中的log4j.xml放在哪里?,grails,configuration,log4j,Grails,Configuration,Log4j,有时我会在Grails应用程序的Config.groovy中看到如下内容: log4j = { appenders { ... } root { ... } ...etc. } 这显然是一种指定log4j配置的编程方式。我想知道: 是否可以在log4j.xml文件中指定log4j配置,然后告诉Grails应用程序在哪里查找它 如果是这样的话,我应该将log4j.xml放在Grails应用程序中的什么位置,以及
Config.groovy
中看到如下内容:
log4j = {
appenders {
...
}
root {
...
}
...etc.
}
这显然是一种指定log4j配置的编程方式。我想知道:
log4j.xml
文件中指定log4j配置,然后告诉Grails应用程序在哪里查找它log4j.xml
放在Grails应用程序中的什么位置,以及如何/在哪里将其“连接”到应用程序Grails默认情况下不会使用log4j.xml。你有几个选择
根据评论中的后续问题,您最好使用DSL语法直接在插件中配置日志记录。Burt在另一篇文章中说。Grails自动排除
Grails app/conf
中与log4j.*
匹配的任何文件:
从scripts/\u GrailsWar.groovy
:
ant.copy(todir:"${stagingDir}/WEB-INF/classes", failonerror:false, preservelastmodified:true) {
fileset(dir:"${basedir}/grails-app/conf") {
exclude(name:"*.groovy")
exclude(name:"log4j.*")
exclude(name:"**/hibernate/**")
exclude(name:"**/spring/**")
}
fileset(dir:"${basedir}/grails-app/conf/hibernate", includes:"**/**")
fileset(dir:"${grailsSettings.sourceDir}/java") {
include(name:"**/**")
exclude(name:"**/*.java")
}
fileset(dir:"${grailsSettings.sourceDir}/groovy") {
include(name:"**/**")
exclude(name:"**/*.groovy")
}
fileset(dir:"${resourcesDirPath}", includes:"log4j.properties")
}
如前所述,不使用log4j.xml
文件,还有其他方法可以实现您想要的功能,但是如果您确实想使用它,您可以向grails app/conf/BuildConfig.groovy
添加一些逻辑,以确保它在WAR中得到打包:
grails.war.resources = { stagingDir, args ->
copy(todir:"${stagingDir}/WEB-INF/classes", failonerror:false, preservelastmodified:true) {
fileset(dir:"${basedir}/grails-app/conf") {
include(name:"log4j.xml")
}
}
}
谢谢@Joshua Moore(+1)-是否可以完全跳过
log4j.xml
?在刚才提到的另一个问题(从昨天开始)中,您有以下内容:arguments=“path/to/log4j.xml”
;这是我考虑使用实际的log4j.xml
文件的唯一原因。相反,在插件的doWithSpring
事件处理程序中,是否有可能使用Groovy语法配置Log4JConfiguer
?这将完全消除对log4j.xml
文件的需要,并且仍然能够在插件中指定log4j配置查看答案的更新。因为您实际上不需要使用log4j.xml,所以这可能是一种更简单的方法。