Spring 如何在Grails中使用Java自定义日志追加器中的服务?

Spring 如何在Grails中使用Java自定义日志追加器中的服务?,spring,grails,log4j,Spring,Grails,Log4j,基本问题是,我想使用Grails中Java自定义日志追加器中的服务。我在resources.groovy中定义了一个bean: beans = { databaseLogAppender(DatabaseLogAppender) { logMessageService = ref("logMessageService") } } …我在Config.groovy中添加了日志追加器: appenders { //...

基本问题是,我想使用Grails中Java自定义日志追加器中的服务。我在resources.groovy中定义了一个bean:

beans = {
    databaseLogAppender(DatabaseLogAppender) {
        logMessageService = ref("logMessageService")
    }
}
…我在Config.groovy中添加了日志追加器:

    appenders { 
            //...
            appender new DatabaseLogAppender(name: 'databaseLog', threshold: org.apache.log4j.Level.WARN)
    } 
    root { 
            warn 'databaseLog' 
            // ...
    } 
我可以看到,当有一个级别为WARN的日志时,我的日志追加器被调用,但是我的服务没有被注入,所以我得到了一个NPE。在我看来,我应该以其他方式配置appender,以便使用我定义的bean而不是直接使用类,但我不知道如何做到这一点。有什么想法吗?

我想出来了。 我在BootStrap.groovy中以编程方式添加了appender,而不是在Config.groovy中配置它。这样就可以正确初始化bean

My BootStrap.groovy:

class BootStrap {
    def databaseLogAppender

    def init = { servletContext ->
        Logger.getRootLogger().addAppender(databaseLogAppender)