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

时间:2014-10-24 07:07:43

标签: spring grails log4j

基本问题是我想在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的日志但是我的服务没有被注入时,我的日志追加器被调用,所以我得到了一个N​​PE。在我看来,我应该以其他方式配置appender,以便我直接使用我定义的bean而不是类,但我无法弄清楚如何做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

我的BootStrap.groovy:

class BootStrap {
    def databaseLogAppender

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