【问题标题】:Grails and logbackGrails 和 logback
【发布时间】:2014-06-11 17:45:34
【问题描述】:

我已在我的 Grails 项目中成功地将 log4j 替换为 logback,但我遇到了一些我认为会自动处理的意外情况。

基本上,有如下代码: log.info(someObject)

在更改为 logback 之前,这工作得很好。现在,它抱怨方法签名和 ch.qos.logback.classic.Logger 想要一个 String 传递给它。我认为这会通过一些 Groovy 的优点自动发生,或者通过调用传递的对象上的 toString() 方法,谁知道还有什么(我不需要关心)。这不是默认行为吗?

是否有一种简单的方法可以让事情正常工作,而无需查找和更改每个被记录对象的情况?我认为转换规则看起来很有希望。这会是正确的下坡路吗?

【问题讨论】:

  • 也许你可以在 Bootstrap 中使用 Groovy 元类向这个类注入方法?

标签: grails groovy log4j slf4j logback


【解决方案1】:

至强的建议奏效了,但我很想知道是否有其他/更好的方法

def methodNames = ["trace", "debug", "info", "warn", "error"]
methodNames.each { methodName ->
    def oldMethod = ch.qos.logback.classic.Logger.metaClass.pickMethod(methodName, [String] as Class[])
    ch.qos.logback.classic.Logger.metaClass[methodName] = { Object o ->
        oldMethod.invoke delegate, o.toString()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    相关资源
    最近更新 更多