0

Я создаю модуль, который использует http://hc.apache.org/httpcomponents-client-4.2.x/index.html, чтобы делать HTTP-запросы к внешним службам. Этот модуль будет использоваться приложением. Приложение настраивает различные аспекты модуля с помощью файла конфигурации на основе XML. и я хочу указать уровень ведения журнала, который будет использоваться для связи с http в этом XML-файле. Модуль прочитает этот файл конфигурации и настроит HTTP-клиент apache с этим уровнем ведения журнала. Я не мог найти способ, каким образом программным образом я могу настроить apache http-библиотеку с правильным уровнем ведения журнала, которое хочет приложение. Там в любом случае?Динамическая настройка клиента Apache Http

ответ

0

HttpClient использует Commons Logging, как описано здесь: http://hc.apache.org/httpcomponents-client-4.2.x/logging.html

Так он делегирует протоколирование в вашей среде журналирования. Чтобы настроить протоколирование HTTP-запросов, вам необходимо использовать API фреймворка регистрации. Например, при использовании JDK протоколирование, что-то, как это должно работать:

java.util.logging.Logger.getLogger("org.apache.http.wire").setLevel(Level.ALL) 

Каждая структура регистрации будет иметь свой собственный API.

Чтобы использовать встроенную реализацию SimpleLog, что упаковано с Викисклада протоколирования, вы могли бы сделать что-то вроде этого:

System.setProperty("org.apache.commons.logging.Log","org.apache.commons.logging.impl.SimpleLog"); 
    System.setProperty("org.apache.commons.logging.simplelog.defaultlog","trace"); 

    DefaultHttpClient client = new DefaultHttpClient(); 
    HttpGet request = new HttpGet("http://www.google.com"); 
    client.execute(request); 

Выполнение этого кода должен напечатать много бревенчатых выходов на консоль (SYSERR) ,

Обратите внимание, что простой журнал на самом деле не является хорошим выбором для рамки ведения журнала производства. Вы действительно должны использовать что-то вроде log4j.

+0

Привет, Барак, я пробовал это \t \t System.setProperty ("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog"); но не смог получить выход из журнала (даже не на консоль). \t \t System.setProperty ("org.apache.commons.logging.simplelog.showdatetime", "true"); \t \t System.setProperty ("org.apache.commons.logging.simplelog.log.org.apache.http", "DEBUG"); \t \t System.setProperty ("org.apache.commons.logging.simplelog.log.org.apache.http.wire", "DEBUG"); \t \t java.util.logging.Logger.getLogger ("org.apache.http.wire"). SetLevel (Level.ALL); – user243655

+0

Добавлен образец кода для SimpleLog – Barak

+0

Где вы предлагаете добавить конфигурацию ведения журнала в свой код? Я должен быть смущен, или, может быть, это ужасный дизайн? Кажется, он не очень «настраивается», если он жестко закодирован в моем приложении. –

Смежные вопросы