Grails应用程序中的log4j.xml放在哪里?

Grails应用程序中的log4j.xml放在哪里?,grails,configuration,log4j,Grails,Configuration,Log4j,有时我会在Grails应用程序的Config.groovy中看到如下内容: log4j = { appenders { ... } root { ... } ...etc. } 这显然是一种指定log4j配置的编程方式。我想知道: 是否可以在log4j.xml文件中指定log4j配置,然后告诉Grails应用程序在哪里查找它 如果是这样的话,我应该将log4j.xml放在Grails应用程序中的什么位置,以及

有时我会在Grails应用程序的
Config.groovy
中看到如下内容:

log4j = {
    appenders {
        ...
    }

    root {
        ...
    }

    ...etc.     
}
这显然是一种指定log4j配置的编程方式。我想知道:

  • 是否可以在
    log4j.xml
    文件中指定log4j配置,然后告诉Grails应用程序在哪里查找它
  • 如果是这样的话,我应该将
    log4j.xml
    放在Grails应用程序中的什么位置,以及如何/在哪里将其“连接”到应用程序

  • Grails默认情况下不会使用log4j.xml。你有几个选择

  • 连接Spring以使用log4j.xml。如果您不熟悉Spring和所需的bean,那么这可能有点复杂。你和我

  • 使用用于Grails的

  • 对于简单的用例,第二个选项是首选的

    更新


    根据评论中的后续问题,您最好使用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,所以这可能是一种更简单的方法。