基本问题是我想在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而不是类,但我无法弄清楚如何做到这一点。有什么想法吗?
答案 0 :(得分:0)
我明白了。 我在BootStrap.groovy中以编程方式添加了我的appender,而不是在我的Config.groovy中配置它。这样就可以正确初始化bean了。
我的BootStrap.groovy:
class BootStrap {
def databaseLogAppender
def init = { servletContext ->
Logger.getRootLogger().addAppender(databaseLogAppender)