Вимкнення журналу HttpClient


134

Я використовую commons-httpclient 3.1 в наборі тестових інтеграцій. Журнал за замовчуванням для HttpClient надзвичайно галасливий, і я не можу його вимкнути. Я намагався дотримуватися інструкцій тут, але жодна з них не має ніякого значення.

В основному мені просто потрібно зробити так, щоб реєстратор org.apache.http.wire закрився. Частина проблеми полягає в тому, що я не знаю, який тип реєстратора намагається використовувати HttpClient, і більшість проблем полягає в тому, що я ніколи раніше не використовував цю бібліотеку. Я спробував створити файл log4j.properties і запустити його в папку тестів / ресурсів, змінити головний файл logging.properties в jre / lib і надіслати різні параметри журналу до Maven, як зазначено на сторінці журналу , і жоден з них будь-яке значення.

Будь-яка допомога вдячна ... це зводить мене з глузду.

ОНОВЛЕННЯ: Виправлення: схоже, що вихідний результат насправді відбувається за допомогою використання jwebunit HttpClient, а не мого власного. Так чи інакше, це не бажано.

ОНОВЛЕННЯ: Дякую за зроблені спроби. Я спробував усе, що пропонується нижче, але все одно не пощастило. Я маю файл commons-logging.properties у своїй папці src / test / ресурси із наступним вмістом

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до параметрів VM, щоб забезпечити завантаження правильного файлу конфігурації
Tommy

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


3
Це коли-небудь вирішувалося для ОП. Саме ця проблема вбиває мене.
Колін Белл

2
Це вирішено? Спробував все відповіді, не пощастило.
Марквдс

Відповіді:


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"));

19
У джерелі 4.2.1 імена журналів: "org.apache.http.headers" та "org.apache.http.wire", хоча навіть використовуючи їх, шумний журнал apache не здасться для мене вимкненим .
Tinclon

Дякую!!! Також: Якщо у вас є проблема десь у власному коді, де ви використовуєте httpclient і не використовуєте Log4j: Також пам’ятайте, що включите jar4j jar в classpath…
FelixD

30

Примітка. Деякі з цієї відповіді можуть повторити речі, які ви вже знаєте (або вважаєте, що знаєте), але в цьому питанні лежить трохи неправильної інформації, тож я почну на початку і викладу все це

  • Commons HttpClient використовує Commons-Logging для всіх своїх потреб у реєстрації.
  • Commons-Logging - це не повна рамка ведення журналу, а, скоріше, є обгорткою навколо декількох існуючих рамок реєстрації
  • Це означає, що коли ви хочете керувати результатами журналу, ви (здебільшого) закінчуєте налаштування бібліотеки, відмінної від Commons-Logging, але оскільки Commons-Logging обертається навколо кількох інших бібліотек, нам важко здогадатися, яку з них налаштувати, не знаючи Ваша саме налаштування.
  • Commons-Logging може увійти до log4j, але він також може увійти до java.util.logging(JDK1.4 logging)
  • Commons-Logging намагається бути розумним і здогадуватися, який фреймворк ви вже використовуєте, і надсилати свої журнали до цього.
  • Якщо у вас ще немає фреймворка журналу, і ви працюєте на JRE версії 1.4 або вище (якою ви насправді повинні бути), то, ймовірно, буде надсилати свої повідомлення журналу до журналу JDK ( java.util.logging)
  • Покладаючись на механізм автоматичного виявлення Commons-Logging, схильний до помилок. Просто додаванняlog4j.jar на classpath призведе до переключення механізму реєстрації, який він використовує, що, ймовірно, не є тим, що потрібно
  • Переважно, щоб ви чітко вказали Commons-Logging, яку бібліотеку журналів використовувати
  • Це можна зробити, створивши commons-logging.propertiesфайл відповідно до цих інструкцій
  • Кроки, які ви хочете виконати для налаштування журналу commons-httpclient, - це
    1. Визначте, який базовий фреймворк ви бажаєте використовувати. Є ряд варіантів, але, ймовірно, log4jабоjava.util.logging найкращі варіанти для вас.
    2. Налаштуйте файл властивостей загальнодоступного журналу, щоб вказати на правильну 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>

Здається, зворотний зв'язок все ще знаходиться в стадії розробки, і API, здається, все ще змінюється, тому цей зразок коду в майбутньому може вийти з ладу. Дивіться також це питання StackOverflow .


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);

    //...
}

2
Фантастичне, єдине рішення, яке працювало для мене. Дуже дякую.
lasote

Дякую! Використовував такий самий код на початку тестового методу, нічого не робив. Розміщення його у власному @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сказати ПОМИЛКУ та винести org.apache.httpналаштування у своїй log4j.properties, які повинні робити це лише журналERROR повідомлення лише за спадщиною.

ОНОВЛЕННЯ:

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

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

Додано готовий файл log4j та код, щоб викликати його для ОП. Цей log4j.properties повинен бути у вашому КЛАССПАТ. Я припускаю stdout на даний момент.

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();

Чи варто розміщувати його в mainметоді?
розбір

@parsecer ви можете
WiR3D

4

Мене вже тривалий час мучить те саме питання, і нарешті вирішив розібратися в цьому. Виявилося, що мій проект залежав від http-builder-0.5.2.jar, який вбудував у себе файл log4j.xml. І, безумовно, рівень журналу для org.apache.http.wire був DEBUG! Я знайшов, що це просто пройти всі файли jar в моїх залежностях і зробити "jar tvf" та притискання до 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>. Видалено залежність і журнали не було. Дякую!
adom

3

У мене була така ж проблема з JWebUnit. Зауважте, що якщо ви використовуєте двійковий розподіл, тоді Logback - це реєстратор за замовчуванням. Для використання log4j з JWebUnit я виконав наступні дії:

  • видалено банки для зворотного зв'язку
  • додати lod4j міст-бібліотеку для sfl4j - slf4j-log4j12-1.6.4.jar
  • додати властивості log4j.properties

Можливо, вам не доведеться видаляти банки для зворотного зв’язку, але вам знадобиться додатковий крок, щоб змусити slf4j використовувати log4j


Дякую, у мене була та сама проблема при використанні OpenRdf. Усі інші поради в цій темі, здавалося, не мали ефекту, поки я не видалив банки для зворотного зв'язку, тепер журнал приємно тихий.
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


в одиничні тести (якщо основні, то в основному) також додайте @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 / resource / logback-test.xml, як у https://github.com/bonigarcia/webdrivermanager-examples/blob/master/src/test/resources /logback-test.xml (ref - https://github.com/bonigarcia/webdrivermanager/isissue/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>

2

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


2

Спробуйте поставити

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

у ваших commons-logging.properties


2

Якщо для апаш 4.5.5, якщо ви хочете перенести рівень для всіх клієнтів апач http-журналу до Попередження , використовуйте:

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>

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");

0

Найкращим рішенням, який я знайшов, було використання плагіну Maven Execucer, щоб запобігти використанню журналу загального користування. Тоді я замість цього додав залежність slf4j для ведення журналів. Тому додайте наступне до свого pom.xml

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

а також додайте плагін Maven-Execucer

<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 має вирішити проблему з журналом сміття.


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 -> Інформація про зворотний зв'язок та за замовчуванням, поки Debug не буде присутній; Ви можете використовувати:

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 отримують правильний запис.


0

З:

  • Log2J 2 2.11.2
  • HttpClient 4.5.7 (клієнт з розширенням 7.0.0)
  • Використання файлу властивостей для налаштування

Можна додати:

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

Якщо "httpclient" у наведеному вище прикладі є логічним іменем, яке ви виберете.

(Тестується в додатку Java 11 OpenFX.)


0

У моєму випадку я використовую конфігурацію xml і додаю це до файлу конфігурації

<logger name="org.apache.http">
    <level value="warn"/>
</logger>


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.