Grails 2.1.1 - 将默认注入的日志对象从commons.logging.Log更改为slf4j.Logger

时间:2012-12-10 14:39:26

标签: grails logging dependency-injection slf4j

我有一个Grails项目,我用Logback替换了Log4j。现在我还想使用org.slf4j.Logger而不是org.apache.commons.logging.Log类进行日志记录。如何更改依赖注入为每个Controller / Service / Domain类放置的默认log对象?

我在BuildConfig.groovyConfig.groovy文件中搜索但我找不到任何配置?我也看了grails-app/src/templates/artifacts/Controller.groovy,但我仍然找不到可以配置的地方......

Shure,我可以得到我自己的org.slf4j.Logger实例,但是我必须在每个类中声明它,如

private static Logger lbLogger = LoggerFactory.getLogger(MyClass.class)

这不是我想要的 - 我只想替换注入的Logger对象。

有人对此话题有任何建议吗?

1 个答案:

答案 0 :(得分:1)

我无法回想起日志对象的注入方式,但无论如何,您可以将自己的记录器注入控制器,服务或域对象。

In BootStrap:
def doWithDynamicMethods = { applicationContext ->
        // def logger = SLF4J new instance
        application.controllerClasses.each { controllerClass ->
             controllerClass.metaClass.getLogger = {-> logger }
        }
  }

这是个主意,抱歉我现在没有Grails环境,所以我无法制作可行的代码。