Я использую commons-httpclient 3.1 в наборе интеграционных тестов. Ведение журнала по умолчанию для HttpClient очень шумно, и я не могу его отключить. Я пробовал следовать приведенным здесь инструкциям, но ни одна из них не имеет никакого значения.
В большинстве случаев мне просто нужно, чтобы регистратор org.apache.http.wire отключился. Частично проблема в том, что я не знаю, какой тип регистратора пытается использовать HttpClient, и большая часть проблемы в том, что я никогда раньше не использовал эту библиотеку. Я попытался создать файл log4j.properties и поместить его в папку test / resources, изменить главный файл logging.properties в jre / lib и отправить различные параметры ведения журнала в Maven, как указано на странице регистрации , и ни один из них имеет значение.
Любая помощь приветствуется ... это сводит меня с ума.
ОБНОВЛЕНИЕ: исправление: похоже, что вывод, о котором идет речь, на самом деле возникает из-за использования jwebunit HttpClient, а не моего собственного. В любом случае это нежелательно.
ОБНОВЛЕНИЕ: Спасибо за попытки. Я пробовал все, что предложено ниже, но все равно не повезло. У меня есть файл commons-logging.properties в моей папке src / test / resources со следующим содержимым
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
log4j.configuration=log4j.properties
и файл log4j.properties в той же папке со следующим содержимым
log4j.rootLogger=ERROR, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n
#This is the line that should make httpclient shut up
log4j.logger.org.apache.http=ERROR
Однако, когда я запускаю свои тесты, я все равно получаю такой вывод:
21:57:41.413 [main] DEBUG org.apache.http.wire - << " [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << " [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << " </ul>[\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << " [\n]"
21:57:41.424 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << " </div>[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << " </li>[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << " [\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << " [\r][\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << " </ul>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "<div class="details">[\n]"
21:57:41.442 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "<div class="details-body details-precis ">[\n]
"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "<div class="details-state">[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
Destroying 1 processes21:57:41.465 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
Этот вывод для всего, что попадает в сеть, делает эту библиотеку непригодной для меня ... до тех пор, пока я не пойму, как ее выключить. Есть ли что-то особенное, что мне нужно сделать, чтобы прочитать конфигурацию журнала?
источник
-Dlog4j.debug
в свою виртуальную машину параметры, чтобы убедиться, что загружен правильный файл конфигурацииpublic class Main { static { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); } // Rest of class as before }
Ответы:
Обновите,
log4j.properties
чтобы включить:Обратите внимание, что если библиотека Log4j не установлена, HttpClient (и, следовательно, JWebUnit) будет использовать логбэк. В этой ситуации создайте или отредактируйте,
logback.xml
чтобы включить:Установка уровня журнала
WARN
с Log4j с использованием имени пакетаorg.apache.commons.httpclient
вlog4j.properties
не будет работать должным образом:Это связано с тем, что источник для HttpClient (v3.1) использует следующие имена журналов:
источник
Примечание: некоторые из этого ответа могут повторять то, что вы уже знаете (или думаете, что знаете), но по этому вопросу есть немного неверной информации, поэтому я собираюсь начать с самого начала и изложить все это
java.util.logging
(ведение журнала JDK1.4)java.util.logging
)log4j.jar
в путь к классам приведет к тому, что он переключит используемый механизм ведения журнала, что, вероятно, не то, что вы хотитеcommons-logging.properties
файл в соответствии с этими инструкциями.log4j
илиjava.util.logging
лучшие варианты для Вас.Log
реализацию. например, чтобы использовать log4j, поместите это в файл свойств:org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
или используйте набор журналов JDKorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
. Их также можно установить как системные свойства (например, используя-D
в командной строке).Это много шагов, но это то, что нужно. Разработчики Apache-commons склонны предполагать, что у вас уже настроена среда ведения журналов, и они могут определить, какая именно из них, с помощью автоматического обнаружения.
Если для вас это не так, то, как правило, требуется немного больше работы, чтобы все заработало.
источник
Я поместил это в свой файл конфигурации log4j
Это ограничивает вывод до уровня предупреждения или выше.
источник
Это сработало для моих тестов;
источник
Для log4j добавьте следующее в
log4j.properties
(вsource
каталоге приложения ):Для выхода из системы следующее
logback.xml
убьет шум:источник
Чтобы это выяснить, потребовалось слишком много времени, но JWebUnit поставляется в комплекте с компонентом ведения журнала Logback , поэтому он даже не будет использовать
log4j.properties
илиcommons-logging.properties
.Вместо этого создайте файл с именем
logback.xml
и поместите его в папку с исходным кодом (в моем случаеsrc
):Logback, похоже, все еще находится в стадии разработки, а API, похоже, все еще меняется, поэтому этот пример кода может выйти из строя в будущем. См. Также этот вопрос на StackOverflow .
источник
У меня возникла эта проблема при использовании RestAssured с JUnit. Для меня этот программный подход работал:
источник
@Before
или@BeforeClass
функции прекрасно сработало.Для настройки вывода журнала мы используем XML, а не файл свойств. Следующий код помог заглушить эту болтовню.
источник
В вашем log4.properties - есть ли у вас этот набор, как я делаю ниже, и никаких других
org.apache.http
регистраторов не установлено в файле?Кроме того, если
org.apache.http
в вашем файле свойств log4j не указан уровень журнала, он унаследует этотlog4j.rootLogger
уровень. Итак, если выlog4j.rootLogger
установили, чтобы сказать ERROR иorg.apache.http
удалить настройки в вашем log4j.properties, это должно сделать его толькоERROR
сообщениями журнала только по наследству.ОБНОВИТЬ:
Создайте
commons-logging.properties
файл и добавьте в него следующую строку. Также убедитесь, что этот файл находится в вашем CLASSPATH.Добавлен завершенный файл log4j и код для его вызова для OP. Этот файл log4j.properties должен быть в вашем CLASSPATH. На данный момент я предполагаю стандартный вывод.
Вот код, который вам нужно добавить в свой класс для вызова регистратора.
источник
Простой способ Log4j и HttpCLient (v3.1 в этом случае должен работать на более высоком уровне, могут потребоваться незначительные изменения)
Убедитесь, что все зависимости верны и MD5 ваши загрузки !!!!
источник
main
метод?Меня уже давно мучает одна и та же проблема, и я наконец решил разобраться в этом. Оказалось, что проблема в том, что мой проект зависел от http-builder-0.5.2.jar, который включал в себя файл log4j.xml. И, конечно же, уровень журнала для org.apache.http.wire был DEBUG! Я обнаружил, что просто просмотрел все файлы jar в моих зависимостях и сделал "jar tvf" и grepping для log4j.
Хотя это открытие привело к возможному решению повысить версию моей зависимости http-builder до 0.6, оно по-прежнему сбивает меня с толку, что должно было произойти в голове разработчика при включении файла log4j.xml в файл jar. Во всяком случае, это, вероятно, сейчас не относится к этой теме. Но я подумал, что полезно упомянуть об этом решении, которое я нашел, учитывая, что когда я искал решение раньше, мое никогда не подходило. Надеюсь, кому-то это пригодится.
источник
<!-- https://mvnrepository.com/artifact/com.fredericboisguerin.excel/excel-reader-writer --> <dependency> <groupId>com.fredericboisguerin.excel</groupId> <artifactId>excel-reader-writer</artifactId> <version>2.1</version> </dependency>
. Удалена зависимость и логи пропали. Спасибо!У меня была такая же проблема с JWebUnit. Обратите внимание, что если вы используете двоичное распределение, то Logback является регистратором по умолчанию. Чтобы использовать log4j с JWebUnit, я выполнил следующие шаги:
Возможно, вам не нужно удалять файлы Logback jar, но вам понадобится дополнительный шаг, чтобы заставить slf4j использовать log4j.
источник
Следующие 2 строки полностью решили мою проблему:
источник
Добавьте следующие строки в файл свойств log4j, и он закроет журналы http: - log4j.logger.org.apache.http = OFF
источник
@BeforeClass public static void BeforeClass() { PropertyConfigurator.configure("log4j.properties"); ...}
файл log4j.properties с единственной строкой log4j.logger.org.apache.http = OFF должен быть в корне (чуть выше папки src)У меня тоже была такая же проблема. При
[main] DEBUG org.apache.http.wire
запуске тестов вся консоль была заполнена .Решение, которое сработало для меня, создавало logback-test.xml src / test / resources / logback-test.xml как в https://github.com/bonigarcia/webdrivermanager-examples/blob/master/src/test/resources /logback-test.xml (см. https://github.com/bonigarcia/webdrivermanager/issues/203 )
Чтобы просмотреть информацию о журналах, я заменил logger name = "io.github.bonigarcia" на имя своего пакета.
источник
Я пришел к этому сообщению, когда искал решение подобной проблемы. Ответ Тима был очень полезным. как и Мэтт Бейкер, я просто хочу отключить журнал httpClient без особой настройки. Поскольку мы не были уверены, какая реализация ведения журнала под общим журналом использовалась, я решил заставить его использовать log4j, добавив файл jar log4j в путь к классам. Настройка по умолчанию конфигурации log4j отключает вывод отладки common-httpclient. Конечно, чтобы сделать его более надежным, вы можете создать файлы common-logging.properties и log4j.properties для дальнейшего определения ваших конфигураций ведения журнала.
источник
Попробуй поставить
в вашем commons-logging.properties
источник
Для apache 4.5.3, если вы хотите переместить уровень для всех журналов http-клиента apache на Warn , используйте:
источник
это работает для меня с добавлением «logback.xml» в корневой путь класса и ниже настройки.
источник
У меня была такая же проблема при запуске интеграционных тестов jwebunit. Я исправил это, исключив логбэк и добавив slf4j-log4j12, вот так:
источник
Мне потребовалось время, чтобы однажды понять, что вам нужно:
Я предполагаю, что HttpClient использует в качестве имени регистратора «httpclient.wire», а не «org.apache.commons.httpclient».
Коварные педерасты.
источник
Это сработало для меня.
источник
Лучшее решение, которое я нашел, - это использовать плагин maven enforcer, чтобы вообще предотвратить использование общего журнала. Затем я добавил зависимость slf4j для ведения журнала. Поэтому добавьте в свой pom.xml следующее
а также добавить плагин maven-enforcer
источник
Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M2:enforce (enforce) on project gs-serving-web-content: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed
У меня возникла такая проблема после установки HttpComponentsClientHttpRequestFactory для моего шаблона отдыха.
Установка OkHttpClientHttpRequestFactory должна решить проблему с ведением журнала корзины.
источник
Просто добавьте эти две зависимости в файл pom: я попытался и преуспел после попытки обсуждения ранее.
Commons-Logging -> Logback и информация по умолчанию, пока не будет отладки; Ты можешь использовать:
для определения информации, которую вы хотите регистрировать: например, Final Result, например. Будет присутствовать только информация, которую я хочу записать.
источник
Я пробовал все вышеперечисленные решения безрезультатно. Мне больше всего подошел вариант с предложением создать файл logback.xml. Это сработало, но ничего не было зарегистрировано. Поигравшись с logback.xml, я получил вот что.
Теперь все уровни ниже DEBUG регистрируются правильно.
источник
С участием:
Можно добавить:
В примере выше httpclient является логическим именем, которое вы выбираете.
(Проверено на приложении Java 11 OpenFX.)
источник
В моем случае я использую конфигурацию xml и добавляю ее в файл конфигурации
источник
Попробуйте log4j.logger.org.apache.http.headers = ERROR.
источник
Для меня приведенные ниже строки в проп-файле log4j убрали весь беспорядок, возникший из-за ведения журнала HttpClient ... Ура !!! :)
источник