代码之家  ›  专栏  ›  技术社区  ›  user1452701

grails3将非字符串对象记录为第一个参数

  •  0
  • user1452701  · 技术社区  · 8 年前

    groovy.lang.MissingMethodException: No signature of method: ch.qos.logback.classic.Logger.info() is applicable for argument types: (org.apache.http.message.BasicStatusLine) values: [HTTP/1.1 200 OK]
    

    下面是日志语句:

    log.info(resp.statusLine)
    

    1 回复  |  直到 8 年前
        1
  •  1
  •   Burt Beckwith    8 年前

    Grails 3的用途 Logback 作为日志库,它支持变量替换,这使得日志记录更加高效。

    log.debug('found ' + items.size() + ' items: ' + items)
    

    这很昂贵,因为表达式在调用之前被连接到单个字符串中 debug()

    if (log.isDebugEnabled()) {
       log.debug('found ' + items.size() + ' items: ' + items)
    }
    

    但这会弄乱你的代码。使用Logback,尽管这样做会更好:

    log.debug('found {} items: {}', items.size(), items)
    

    现在您只需传递一个简单的字符串加上两个参数,以便在指定的位置进行插值,但前提是logger级别启用了log语句。如果不是这样的话,这个电话几乎是禁止的。

    对于日志语句,应该执行以下操作:

    log.info('{}', resp.statusLine)
    

    log.info('Status: {}', resp.statusLine)
    
    推荐文章