【问题标题】:Send messages logged via commons logging (by httpbuilder) to Logback将通过公共日志记录(通过 httpbuilder)记录的消息发送到 Logback
【发布时间】:2012-05-10 15:26:34
【问题描述】:

我正在尝试在 groovy 中为 HTTPBuilder 的 RESTClient 的控制台获取 apache httpclient 日志。我尝试了各种方法,包括standard instructions 和其他一些建议,例如thisthis,但都无济于事。

终于在经历了很多挫折之后,我从这个SO question 得到了一些帮助,虽然这不是一个干净的解决方案,但它完成了工作 - 我现在确实得到了电线日志。

这里有一些示例代码:

// test.groovy
import groovyx.net.http.RESTClient

import java.util.logging.ConsoleHandler
import java.util.logging.Level
import java.util.logging.Logger

// Remove default loggers
def logger=Logger.getLogger('')
def handlers=logger.handlers
handlers.each() { handler->logger.removeHandler(handler) }

// Log ALL to Console
logger.setLevel Level.FINE
def consoleHandler=new ConsoleHandler()
consoleHandler.setLevel Level.FINE
logger.addHandler(consoleHandler)

def myclient = new RESTClient( 'https://www.google.com/search' )

def resp = myclient.get( queryString: 'q=httpclient' )

现在唯一的问题是我想为此使用 logback 而不是 java.util.Logging,因为我的应用程序的其余部分已经在使用 logback。

我现在正在尝试为上述获取等效的 logback.groovy 配置,但它不起作用:

// logback.groovy
appender("CONSOLE", ConsoleAppender)
{
    encoder(PatternLayoutEncoder)
    {
      pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
    }
}


root DEBUG, ["CONSOLE"]

logger "groovyx.net.http.HttpURLClient", DEBUG, ["CONSOLE"]
logger "org.apache.http", DEBUG, ["CONSOLE"]
logger "org.apache.http.headers", DEBUG, ["CONSOLE"]
logger "org.apache.http.wire", DEBUG, ["CONSOLE"]

我没有收到任何 apache 标头或 apache 线路日志。我对 logback(以及 log4j 和 slf4j 和 java.util.Logging)非常陌生,因此非常感谢您的帮助。

【问题讨论】:

  • 恐怕我没看懂问题。
  • 我希望能够在 logback 中执行这个 java.util.logging 功能(上面给出的实际代码): // 删除默认记录器 ... // 将所有日志记录到控制台
  • 注意:this answer to a question 关于如何将 JUL (java.util.logging) 发送到 Logback 是相关的(但由于这种情况下的根本问题是将 commons logging 发送到Logback 它不是重复的)。

标签: groovy logback httpbuilder


【解决方案1】:

作为一个库 HttpClient 并不是要规定用户必须使用哪个日志框架。因此HttpClient利用了Commons Logging包提供的日志接口

您应该使用 JCL 到 SLF4j 桥接器来通过 SLF4j 处理程序处理应用程序的 JCL 活动。见http://www.slf4j.org/legacy.html#jcl-over-slf4j

【讨论】:

  • 这对我有用。只需将依赖项添加到 'org.slf4j:jcl-over-slf4j:1.7.13' 或任何适合您的最新/兼容版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多