Groovy で HTTPBuilder の RESTClient のコンソールに apache httpclient ログを取得しようとしています。標準的な手順や、 thisやthisなどの他の提案など、さまざまなアプローチを試みましたが、役に立ちませんでした。
最後に、多くの欲求不満の後、私はこの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) に非常に慣れていないので、助けていただければ幸いです。