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