0

Groovy で HTTPBuilder の RESTClient のコンソールに apache httpclient ログを取得しようとしています。標準的な手順や、 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) に非常に慣れていないので、助けていただければ幸いです。

4

1 に答える 1

2

ライブラリ HttpClient であることは、ユーザーが使用する必要があるロギング フレームワークを指示することではありません。したがって、HttpClient は、Commons Logging パッケージによって提供されるロギング インターフェイスを利用します。

SLF4j ハンドラを介してアプリケーションの JCL アクティビティを処理するには、JCL から SLF4j へのブリッジを使用する必要があります。http://www.slf4j.org/legacy.html#jcl-over-slf4jを参照してください。

于 2014-02-20T07:24:23.567 に答える