Отключить ведение журнала HttpClient

134

Я использую 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в свою виртуальную машину параметры, чтобы убедиться, что загружен правильный файл конфигурации
Томми
3
См. Stackoverflow.com/questions/1436761/… . К выдержке: public class Main { static { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); } // Rest of class as before }
PVS
1
Официальный документ: hc.apache.org/httpclient-3.x/logging.html
Кристоф Русси
3
Это когда-нибудь решалось для OP. Именно эта проблема меня убивает.
Коллин Белл
2
Это решено? Пробовал много ответов, не повезло.
Markvds

Ответы:

85

Обновите, log4j.propertiesчтобы включить:

log4j.logger.httpclient.wire.header=WARN
log4j.logger.httpclient.wire.content=WARN

Обратите внимание, что если библиотека Log4j не установлена, HttpClient (и, следовательно, JWebUnit) будет использовать логбэк. В этой ситуации создайте или отредактируйте, logback.xmlчтобы включить:

<configuration>
    <logger name="org.apache" level="WARN" />
    <logger name="httpclient" level="WARN" /> 
</configuration>

Установка уровня журнала WARNс Log4j с использованием имени пакета org.apache.commons.httpclientв log4j.properties не будет работать должным образом:

log4j.logger.org.apache.commons.httpclient=WARN

Это связано с тем, что источник для HttpClient (v3.1) использует следующие имена журналов:

public static Wire HEADER_WIRE = new Wire(LogFactory.getLog("httpclient.wire.header"));
public static Wire CONTENT_WIRE = new Wire(LogFactory.getLog("httpclient.wire.content"));
Sud Monkey
источник
19
В источнике 4.2.1 имена журналов: "org.apache.http.headers" и "org.apache.http.wire", хотя даже при их использовании шумное ведение журнала apache, похоже, не отключится для меня ,
Tinclon
Спасибо!!! Также: если у вас есть эта проблема где-то в вашем собственном коде, где вы используете httpclient и еще не используете Log4j: Также не забудьте включить файл log4j в путь к классам ...
FelixD
30

Примечание: некоторые из этого ответа могут повторять то, что вы уже знаете (или думаете, что знаете), но по этому вопросу есть немного неверной информации, поэтому я собираюсь начать с самого начала и изложить все это

  • Commons HttpClient использует Commons-Logging для всех нужд ведения журнала.
  • Commons-Logging - это не полноценная среда ведения журнала, а скорее оболочка нескольких существующих платформ ведения журнала.
  • Это означает, что когда вы хотите управлять выводом журнала, вы (в основном) в конечном итоге настраиваете библиотеку, отличную от Commons-Logging, но поскольку Commons-Logging охватывает несколько других библиотек, нам трудно угадать, какую из них настроить, не зная ваша точная настройка.
  • Commons-Logging может регистрироваться в log4j, но также может регистрироваться java.util.logging(ведение журнала JDK1.4)
  • Commons-Logging пытается быть умным и угадывает, какую платформу ведения журналов вы уже используете, и отправляет ей свои журналы.
  • Если у вас еще нет фреймворка для ведения журнала и вы работаете на JRE версии 1.4 или выше (что вам действительно должно быть), то, вероятно, он будет отправлять сообщения журнала в JDK logging ( java.util.logging)
  • Использование механизма автообнаружения Commons-Logging может привести к ошибкам. Простое добавление log4j.jarв путь к классам приведет к тому, что он переключит используемый механизм ведения журнала, что, вероятно, не то, что вы хотите
  • Предпочтительно, чтобы вы явно указали Commons-Logging, какую библиотеку ведения журнала использовать
  • Вы можете сделать это, создав commons-logging.propertiesфайл в соответствии с этими инструкциями.
  • Шаги, которые вы хотите выполнить для настройки ведения журнала commons-httpclient:
    1. Решите, какую базовую платформу ведения журнала вы хотите использовать. Есть несколько вариантов, но , вероятно , log4jили java.util.loggingлучшие варианты для Вас.
    2. Настройте файл свойств commons-logging, чтобы указать на правильную Logреализацию. например, чтобы использовать log4j, поместите это в файл свойств: org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLoggerили используйте набор журналов JDK org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger. Их также можно установить как системные свойства (например, используя -Dв командной строке).
    3. Настройте базовую реализацию ведения журнала (например, log4j), чтобы игнорировать сообщения, которые вам не нужны, и выводить сообщения, которые вам нужны.

Это много шагов, но это то, что нужно. Разработчики Apache-commons склонны предполагать, что у вас уже настроена среда ведения журналов, и они могут определить, какая именно из них, с помощью автоматического обнаружения.
Если для вас это не так, то, как правило, требуется немного больше работы, чтобы все заработало.

Тим
источник
1
Это очень полезная информация; Я действительно чувствую, что это нужно добавить на эту страницу . Вы написали это только для этого?
natem345
1
Чувак, это отличный ответ, но мне не удалось заставить его работать. Я использую Dropwizard, и я пробовал все, что вы упомянули, безрезультатно: '(
Вик Сидублью
19

Я поместил это в свой файл конфигурации log4j

log4j.logger.org.apache.http.wire=WARN

Это ограничивает вывод до уровня предупреждения или выше.

Филипп Нужный
источник
19

Это сработало для моих тестов;

java.util.logging.Logger.getLogger("org.apache.http.wire").setLevel(java.util.logging.Level.FINEST);
java.util.logging.Logger.getLogger("org.apache.http.headers").setLevel(java.util.logging.Level.FINEST);
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", "ERROR");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "ERROR");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.headers", "ERROR");
Даниэль Магнуссон
источник
18

Для log4j добавьте следующее в log4j.propertiessourceкаталоге приложения ):

log4j.logger.org.apache=WARN
log4j.logger.httpclient=WARN

Для выхода из системы следующее logback.xmlубьет шум:

<configuration>
    <logger name="org.apache" level="WARN" />
    <logger name="httpclient" level="WARN" /> 
</configuration>
Али Чеаито
источник
1
Я использую log4j. Добавление первых двух строк в решение моей проблемы полностью. Все остальные сообщения журнала отображаются в соответствии с установленным мной уровнем. В то время как журналы apache этого не делают. Большая помощь. Спасибо.
Arun Thundyill Saseendran
Это, вероятно, будет зависеть от вашей ситуации, но для отключения ужасно подробного ведения журнала, включенного из коробки с AWS SDK, это единственный, который сработал.
Мэтт Бейкер
11

Чтобы это выяснить, потребовалось слишком много времени, но JWebUnit поставляется в комплекте с компонентом ведения журнала Logback , поэтому он даже не будет использовать log4j.propertiesили commons-logging.properties.

Вместо этого создайте файл с именем logback.xmlи поместите его в папку с исходным кодом (в моем случае src):

<configuration debug="false">
  <!-- definition of appender STDOUT -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
    </encoder>
  </appender>

  <root level="ERROR">
    <!-- appender referenced after it is defined -->
    <appender-ref ref="STDOUT"/>
  </root> 
</configuration>

Logback, похоже, все еще находится в стадии разработки, а API, похоже, все еще меняется, поэтому этот пример кода может выйти из строя в будущем. См. Также этот вопрос на StackOverflow .

Jevon
источник
1
Вы красотка. Я чуть не убил кошку из-за этого. Это сводило меня с ума.
Manish Patel
Это было решением для меня. Я думаю, это потому, что другие библиотеки, которые я включал, транзитивно включили логбэк, поэтому он был заблокирован этим регистратором.
Натан
10

У меня возникла эта проблема при использовании RestAssured с JUnit. Для меня этот программный подход работал:

@BeforeClass
public static void setUpClass() {
    ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) org.slf4j.LoggerFactory.getLogger("org.apache.http");
    root.setLevel(ch.qos.logback.classic.Level.INFO);

    //...
}
tanacsg
источник
2
Замечательно, единственное решение, которое помогло мне. Спасибо.
lasote 05
Спасибо! Использовал тот же самый код в начале метода тестирования, ничего не сделал. Размещение его в собственной функции @Beforeили @BeforeClassфункции прекрасно сработало.
ExactaBox
8

Для настройки вывода журнала мы используем XML, а не файл свойств. Следующий код помог заглушить эту болтовню.

<logger name="org.apache.commons.httpclient">
    <level value="fatal"/>
</logger>

<logger name="httpclient.wire.header">
    <level value="fatal"/>
</logger>

<logger name="httpclient.wire.content">
    <level value="fatal"/>
</logger>
Барклай
источник
4

В вашем log4.properties - есть ли у вас этот набор, как я делаю ниже, и никаких других org.apache.httpрегистраторов не установлено в файле?

-org.apache.commons.logging.simplelog.log.org.apache.http=ERROR

Кроме того, если org.apache.httpв вашем файле свойств log4j не указан уровень журнала, он унаследует этот log4j.rootLoggerуровень. Итак, если вы log4j.rootLoggerустановили, чтобы сказать ERROR и org.apache.httpудалить настройки в вашем log4j.properties, это должно сделать его только ERRORсообщениями журнала только по наследству.

ОБНОВИТЬ:

Создайте commons-logging.propertiesфайл и добавьте в него следующую строку. Также убедитесь, что этот файл находится в вашем CLASSPATH.

org.apache.commons.logging.LogFactory = org.apache.commons.logging.impl.Log4jFactory

Добавлен завершенный файл log4j и код для его вызова для OP. Этот файл log4j.properties должен быть в вашем CLASSPATH. На данный момент я предполагаю стандартный вывод.

log4j.configuration=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

log4j.logger.org.apache.http=ERROR

Вот код, который вам нужно добавить в свой класс для вызова регистратора.

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; 

public class MyClazz
{
    private Log log = LogFactory.getLog(MyClazz.class);
    //your code for the class
}
Холодные бобы
источник
Перед попыткой использования HttpClient мне не понадобился файл log4j.properties. Я попытался поместить ваши строки в свой файл src / test / resources / log4j.properties, но это не имело никакого значения. Правильно ли вообще помещать параметры commons.logging в log4j.properties?
Мэтт Бейкер
Да, общие журналы - это просто оболочка для log4j. Как вы вызываете регистратор в своем тестовом классе?
CoolBeans
(После вашего обновления) я сделал так, чтобы указанная выше строка была единственной в моем файле log4j.properties, и она все еще выплевывала все.
Мэтт Бейкер
1
Я не вызываю регистратор, HttpClient делает это сам.
Мэтт Бейкер
В предоставленной вами ссылке сказано: «Примечание: Log4j не включен в дистрибутив HttpClient». Так что вам обязательно нужно добавить его в свой КЛАСС. Вы видите вывод в stdout (консоль) или в файле журнала? Я создам образец файла log4h с кодом, который будет вызывать его за вас.
CoolBeans
4

Простой способ Log4j и HttpCLient (v3.1 в этом случае должен работать на более высоком уровне, могут потребоваться незначительные изменения)

Убедитесь, что все зависимости верны и MD5 ваши загрузки !!!!

import org.apache.commons.httpclient.HttpClient;  
import org.apache.log4j.Level;  
import org.apache.log4j.Logger;  

---

Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.WARN);
Logger.getLogger("httpclient.wire.header").setLevel(Level.WARN);
Logger.getLogger("httpclient.wire.content").setLevel(Level.WARN);

HttpClient client = new HttpClient();
WiR3D
источник
Должен ли я поместить это в mainметод?
парсер
@parsecer, ты можешь
WiR3D
4

Меня уже давно мучает одна и та же проблема, и я наконец решил разобраться в этом. Оказалось, что проблема в том, что мой проект зависел от 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. Во всяком случае, это, вероятно, сейчас не относится к этой теме. Но я подумал, что полезно упомянуть об этом решении, которое я нашел, учитывая, что когда я искал решение раньше, мое никогда не подходило. Надеюсь, кому-то это пригодится.

paulito415
источник
Аналогичная проблема при использовании <!-- 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>. Удалена зависимость и логи пропали. Спасибо!
Adom
3

У меня была такая же проблема с JWebUnit. Обратите внимание, что если вы используете двоичное распределение, то Logback является регистратором по умолчанию. Чтобы использовать log4j с JWebUnit, я выполнил следующие шаги:

  • удалены файлы журнала Logback
  • добавить библиотеку моста lod4j для sfl4j - slf4j-log4j12-1.6.4.jar
  • добавить log4j.properties

Возможно, вам не нужно удалять файлы Logback jar, но вам понадобится дополнительный шаг, чтобы заставить slf4j использовать log4j.

Лукаш Лацки
источник
Спасибо, у меня была такая же проблема при использовании OpenRdf. Все остальные советы в этой теме, казалось, не имели никакого эффекта, пока я не удалил jar-файлы с логбэком, теперь журнал тихо.
amarillion
3

Следующие 2 строки полностью решили мою проблему:

Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.ERROR);
Logger.getLogger("httpclient").setLevel(Level.ERROR);
Тоша
источник
У меня это тоже сработало, но мне не понадобились: Logger.getLogger ("org.apache.commons.httpclient"). SetLevel (Level.ERROR);
Jamel Toms
3

Добавьте следующие строки в файл свойств log4j, и он закроет журналы http: - log4j.logger.org.apache.http = OFF

Rancho
источник
в модульных тестах (если main, то в main) также добавьте @BeforeClass public static void BeforeClass() { PropertyConfigurator.configure("log4j.properties"); ...}файл log4j.properties с единственной строкой log4j.logger.org.apache.http = OFF должен быть в корне (чуть выше папки src)
Саша Бонд
3

У меня тоже была такая же проблема. При [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" на имя своего пакета.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.mypackage" level="DEBUG" />
    <logger name="org" level="INFO" />
    <logger name="com" level="INFO" />

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>
nantitv
источник
2

Я пришел к этому сообщению, когда искал решение подобной проблемы. Ответ Тима был очень полезным. как и Мэтт Бейкер, я просто хочу отключить журнал httpClient без особой настройки. Поскольку мы не были уверены, какая реализация ведения журнала под общим журналом использовалась, я решил заставить его использовать log4j, добавив файл jar log4j в путь к классам. Настройка по умолчанию конфигурации log4j отключает вывод отладки common-httpclient. Конечно, чтобы сделать его более надежным, вы можете создать файлы common-logging.properties и log4j.properties для дальнейшего определения ваших конфигураций ведения журнала.

bcxw
источник
2

Попробуй поставить

org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog

в вашем commons-logging.properties

Safrain
источник
2

Для apache 4.5.3, если вы хотите переместить уровень для всех журналов http-клиента apache на Warn , используйте:

log4j.logger.org.apache=WARN
Адриан Элдер
источник
2

это работает для меня с добавлением «logback.xml» в корневой путь класса и ниже настройки.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <logger name="org.apache" level="WARN"/>
    <logger name="httpclient" level="WARN"/>
</configuration>
Lanzisun
источник
1

У меня была такая же проблема при запуске интеграционных тестов jwebunit. Я исправил это, исключив логбэк и добавив slf4j-log4j12, вот так:

<dependency>
  <groupId>net.sourceforge.jwebunit</groupId>
  <artifactId>jwebunit-htmlunit-plugin</artifactId>
  <version>3.0</version>
  <exclusions>
    <exclusion>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
</dependency>
Дэвид Помрой
источник
1

Мне потребовалось время, чтобы однажды понять, что вам нужно:

log4j.logger.httpclient.wire=ERROR

Я предполагаю, что HttpClient использует в качестве имени регистратора «httpclient.wire», а не «org.apache.commons.httpclient».

Коварные педерасты.

Адриан Костер
источник
1

Это сработало для меня.

System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire.header", "error");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "error");
System.setProperty("log4j.logger.org.apache.http", "error");
System.setProperty("log4j.logger.org.apache.http.wire", "error");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "error");
irlatech
источник
0

Лучшее решение, которое я нашел, - это использовать плагин maven enforcer, чтобы вообще предотвратить использование общего журнала. Затем я добавил зависимость slf4j для ведения журнала. Поэтому добавьте в свой pom.xml следующее

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>[your version here]</version>
    </dependency>

а также добавить плагин maven-enforcer

<plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-enforcer-plugin</artifactId>
           <version>[your version here]</version>
           <executions>
               <execution>
                   <id>enforce</id>
                   <configuration>
                       <rules>
                           <DependencyConvergence />
                           <bannedDependencies>
                               <excludes>
                                   <exclude>commons-logging:commons-logging</exclude>
                               </excludes>
                           </bannedDependencies>
                       </rules>
                   </configuration>
                   <goals>
                       <goal>enforce</goal>
                   </goals>
               </execution>
           </executions>
       </plugin>
Большой папа программист
источник
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
парсер
0

У меня возникла такая проблема после установки HttpComponentsClientHttpRequestFactory для моего шаблона отдыха.

Установка OkHttpClientHttpRequestFactory должна решить проблему с ведением журнала корзины.

sann05
источник
0

Просто добавьте эти две зависимости в файл pom: я попытался и преуспел после попытки обсуждения ранее.

<!--Using logback-->
<dependency>
   <groupId>commons-logging</groupId>
   <artifactId>commons-logging</artifactId>
   <version>1.2</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

Commons-Logging -> Logback и информация по умолчанию, пока не будет отладки; Ты можешь использовать:

private static Logger log = LoggerFactory.getLogger(HuaweiAPI.class);

для определения информации, которую вы хотите регистрировать: например, Final Result, например. Будет присутствовать только информация, которую я хочу записать.

Герман СЮ
источник
0

Я пробовал все вышеперечисленные решения безрезультатно. Мне больше всего подошел вариант с предложением создать файл logback.xml. Это сработало, но ничего не было зарегистрировано. Поигравшись с logback.xml, я получил вот что.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <withJansi>true</withJansi>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    </encoder>
  </appender>
  <root level="INFO">
    <appender-ref ref="STDOUT"/>
  </root>
</configuration>

Теперь все уровни ниже DEBUG регистрируются правильно.

aggaton
источник
0

С участием:

  • Log2J 2 2.11.2
  • HttpClient 4.5.7 (клиент для отдыха elasticsearch 7.0.0)
  • Использование файла свойств для настройки

Можно добавить:

logger.httpclient.name=org.apache.http
logger.httpclient.level=info

В примере выше httpclient является логическим именем, которое вы выбираете.

(Проверено на приложении Java 11 OpenFX.)

Imifos
источник
0

В моем случае я использую конфигурацию xml и добавляю ее в файл конфигурации

<logger name="org.apache.http">
    <level value="warn"/>
</logger>
Харун
источник
0

Попробуйте log4j.logger.org.apache.http.headers = ERROR.

Fracdroid
источник
0

Для меня приведенные ниже строки в проп-файле log4j убрали весь беспорядок, возникший из-за ведения журнала HttpClient ... Ура !!! :)

log4j.logger.org.apache.http.headers=ERROR
log4j.logger.org.apache.http.wire=ERROR
log4j.logger.org.apache.http.impl.conn.PoolingHttpClientConnectionManager=ERROR
log4j.logger.org.apache.http.impl.conn.DefaultManagedHttpClientConnection=ERROR
log4j.logger.org.apache.http.conn.ssl.SSLConnectionSocketFactory=ERROR
log4j.logger.org.springframework.web.client.RestTemplate=ERROR
log4j.logger.org.apache.http.client.protocol.RequestAddCookies=ERROR
log4j.logger.org.apache.http.client.protocol.RequestAuthCache=ERROR
log4j.logger.org.apache.http.impl.execchain.MainClientExec=ERROR
log4j.logger.org.apache.http.impl.conn.DefaultHttpClientConnectionOperator=ERROR
Дилип Мутхукуруссимана
источник