0

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

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

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

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

这不是我想要的——我很想替换注入的Logger对象。

有人对这个话题有什么建议吗?

4

1 回答 1

1

我不记得日志对象是如何注入的,但无论如何您都可以将自己的记录器注入控制器、服务或域对象。

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

这就是想法,抱歉我现在没有 Grails 环境,所以我无法编写可行的代码。

于 2012-12-10T18:46:37.823 回答