grails log4j不适用于自定义Appender

grails log4j不适用于自定义Appender,grails,log4j,Grails,Log4j,我正在尝试将grails.app.controllers和grails.app.services中的“info and over level”日志记录到这个appender“appLog”中。从文档和大量谷歌搜索,当然还有堆栈溢出。我知道我需要的只是我的appender和logger信息。 但这对我来说永远不起作用,所以我添加了根块,如下所示,并使其将每个日志路由到我的appender,并且我还将additivity设置为false,这样它就不会提取任何继承的日志。 我的要求很简单,但我无法实现

我正在尝试将grails.app.controllers和grails.app.services中的“info and over level”日志记录到这个appender“appLog”中。从文档和大量谷歌搜索,当然还有堆栈溢出。我知道我需要的只是我的appender和logger信息。 但这对我来说永远不起作用,所以我添加了根块,如下所示,并使其将每个日志路由到我的appender,并且我还将additivity设置为false,这样它就不会提取任何继承的日志。 我的要求很简单,但我无法实现。我正在使用Grails2.4.1

有人能解释一下这里出了什么问题吗

以下是我的配置:

Log4j:main{
    appender name: "appLog",
        new org.apache.log4j.DailyRollingFileAppender(
            threshold: org.apache.log4j.Level.INFO,
            datePattern: "'.'yyyy-MM-dd",
            file: log4jFileName,
            layout: pattern(conversionPattern: '[%d{yyyy-MM-dd hh:mm:ss.SSS}] %p %c{5} %m%n')
        )

    info additivity: false, appLog: "grails.app.services.xxxService"

    root {
        debug 'appLog'
        additivity = false 
    }

}

有几件事我看错了:

  • 您的
    名称:“appLog”
    部分应该位于
    dailrollingfileappender
    构造函数的内部
  • 您缺少一个appenders块
  • 尝试将配置更改为:

    log4j = {
        appenders {
            appender new org.apache.log4j.DailyRollingFileAppender(
                name: "appLog",
                threshold: org.apache.log4j.Level.INFO,
                datePattern: "'.'yyyy-MM-dd",
                file: log4jFileName,
                layout: pattern(conversionPattern: '[%d{yyyy-MM-dd hh:mm:ss.SSS}] %p %c{5} %m%n')
            )
        }
    
        info additivity: false,
             appLog: "grails.app.services.xxxService"
    
        root {
            debug 'appLog'
        }
    }
    

    所有这些都在Config.groovy中的log4j闭包中吗?意思是
    log4j={…}
    。您的配置的
    Log4J:main
    部分让我感到困惑。很抱歉,不清楚。是的,log4j块在我的config.groovy类中。默认情况下,最后一个块名为log4j.main={…}这有一些注释掉的代码,我将其替换为问题中粘贴的代码..您的appender是否在
    appenders
    块中?看到了。非常感谢。那是一个愚蠢的错误。我尝试了几乎所有的组合来让这个工作,我删除了那个块。我的错。现在,我可以在自定义appender中看到我在服务类中输入的日志。再次感谢:)没问题!很乐意帮忙。