Deshabilitar el registro de HttpClient

133

Estoy usando commons-httpclient 3.1 en un conjunto de pruebas de integración. El registro predeterminado para HttpClient es extremadamente ruidoso y parece que no puedo desactivarlo. He intentado seguir las instrucciones aquí, pero ninguna de ellas hace ninguna diferencia.

Principalmente solo necesito hacer que el registrador org.apache.http.wire se cierre. Parte del problema es que no sé qué tipo de registrador intenta utilizar HttpClient y la mayor parte del problema es que nunca antes había usado esta biblioteca. Intenté crear un archivo log4j.properties y soltarlo en mi carpeta test / resources, modificando el archivo master logging.properties en jre / lib y enviando las diversas opciones de registro a Maven como se especifica en la página de registro , y ninguna de ellas hacer alguna diferencia

Cualquier ayuda es apreciada ... esto me está volviendo loco.

ACTUALIZACIÓN: Una corrección: parece que la salida en cuestión se está originando a través del uso de jwebunit de HttpClient, no el mío. De cualquier manera, no es deseable.

ACTUALIZACIÓN: Gracias por los intentos hasta ahora. He intentado todo lo que se sugiere a continuación, pero todavía no tuve suerte. Tengo un archivo commons-logging.properties en mi carpeta src / test / resources con el siguiente contenido

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
log4j.configuration=log4j.properties

y un archivo log4j.properties en la misma carpeta con los siguientes contenidos

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

Sin embargo, cuando ejecuto mis pruebas todavía obtengo un montón de resultados como este:

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]"

Esta salida para todo lo que se encuentra en el cable está haciendo que esta biblioteca sea inutilizable para mí ... eso es hasta que pueda descubrir cómo apagarla. ¿Hay algo especial que deba hacer para leer esta configuración de registro?

Matt Baker
fuente
Para todos los que se encuentren con este problema: asegúrese de agregar -Dlog4j.debuga sus opciones de VM para asegurarse de que se carga el archivo de configuración correcto
Tommy
3
Ver stackoverflow.com/questions/1436761/… . Para extraer: public class Main { static { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); } // Rest of class as before }
PVS
1
Documento oficial: hc.apache.org/httpclient-3.x/logging.html
Christophe Roussy
3
¿Alguna vez esto se resolvió para OP? Este problema exacto me está matando.
Collin Bell
2
¿Esto está resuelto? Intenté muchas de las respuestas, sin suerte.
Markvds

Respuestas:

85

Actualización log4j.propertiespara incluir:

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

Tenga en cuenta que si la biblioteca Log4j no está instalada, HttpClient (y, por lo tanto, JWebUnit) usará logback. En esta situación, cree o edite logback.xmlpara incluir:

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

Ajuste del nivel de registro a WARNla Log4J usando el nombre del paquete org.apache.commons.httpclienten log4j.properties no funcionará como se espera:

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

Esto se debe a que la fuente de HttpClient (v3.1) usa los siguientes nombres de registro:

public static Wire HEADER_WIRE = new Wire(LogFactory.getLog("httpclient.wire.header"));
public static Wire CONTENT_WIRE = new Wire(LogFactory.getLog("httpclient.wire.content"));
Mono del sur
fuente
19
En la fuente 4.2.1, los nombres de registro son: "org.apache.http.headers" y "org.apache.http.wire", aunque incluso al usarlos, el ruidoso registro de apache no parece cerrarse para mí. .
Tinclon
¡¡¡Gracias!!! Además: si tiene este problema en algún lugar de su propio código, donde usa httpclient y aún no usa Log4j: Recuerde también incluir el jar log4j en el classpath ...
FelixD
30

Nota: Parte de esta respuesta puede repetir cosas que ya sabe (o cree que sabe), pero hay un poco de información errónea flotando sobre esta pregunta, por lo que comenzaré por el principio y lo explicaré todo

  • Commons HttpClient utiliza Commons-Logging para todas sus necesidades de registro.
  • Commons-Logging no es un marco de registro completo, sino que es un contenedor alrededor de varios marcos de registro existentes
  • Eso significa que cuando desea controlar la salida de registro, (en su mayoría) termina configurando una biblioteca que no sea Commons-Logging, pero debido a que Commons-Logging envuelve varias otras bibliotecas, es difícil para nosotros adivinar cuál configurar sin saber Su configuración exacta.
  • Commons-Logging puede iniciar sesión en log4j, pero también puede iniciar sesión java.util.logging(registro JDK1.4)
  • Commons-Logging intenta ser inteligente y adivinar qué marco de registro ya está utilizando, y enviar sus registros a eso.
  • Si aún no tiene un marco de registro y está ejecutando en un JRE que es 1.4 o superior (que realmente debería ser), entonces probablemente enviará sus mensajes de registro al registro JDK ( java.util.logging)
  • Confiar en el mecanismo de autodescubrimiento de Commons-Logging es propenso a errores. Simplemente agregandolog4j.jar al classpath hará que cambie el mecanismo de registro que usa, que probablemente no sea lo que desea
  • Es preferible que le diga explícitamente a Commons-Logging qué biblioteca de registro usar
  • Puede hacer esto creando un commons-logging.propertiesarchivo según estas instrucciones
  • Los pasos que desea seguir para configurar el registro commons-httpclient son
    1. Decida qué marco de registro subyacente desea utilizar. Hay varias opciones, pero probablementelog4j o java.util.loggingsean las mejores opciones para usted.
    2. Configure el archivo de propiedades de registro de comunes para que apunte a la Logimplementación correcta . por ejemplo, para usar log4j, coloque esto en el archivo de propiedades:org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger o para usar el conjunto de registros JDK org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger. También se pueden establecer como propiedades del sistema (por ejemplo, -Den la línea de comando).
    3. Configure la implementación de registro subyacente (por ejemplo, log4j) para ignorar los mensajes que no desea y generar los mensajes que sí desea.

Son muchos pasos, pero eso es lo que se necesita. Los desarrolladores de Apache-commons tienden a suponer que ya tendrá un marco de registro configurado, y pueden determinar cuál es mediante autodescubrimiento.
Si eso no es cierto para usted, entonces se necesita un poco más de trabajo para que todo funcione.

Tim
fuente
1
Esta es información muy útil; Realmente siento que debería agregarse a esta página . ¿Lo escribiste solo para esto?
natem345
1
Hombre, esta respuesta es genial, pero no pude hacer que funcione. Estoy usando Dropwizard, e intenté todo lo que mencionaste, sin éxito: '(
Vic Seedoubleyew
19

Puse esto en mi archivo de configuración log4j

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

Esto limita la salida al nivel de Advertencia o superior

Philip Nuzhnyy
fuente
19

Esto funcionó para mis pruebas;

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");
Daniel Magnusson
fuente
18

Para log4j, agregue lo siguiente a log4j.properties(en el sourcedirectorio de la aplicación ):

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

Para el inicio de sesión, lo siguiente logback.xmlmatará el ruido:

<configuration>
    <logger name="org.apache" level="WARN" />
    <logger name="httpclient" level="WARN" /> 
</configuration>
Ali Cheaito
fuente
1
Estoy usando log4j. Agregar las dos primeras líneas en el solucionador de registros de mi problema por completo. Todos mis otros mensajes de registro aparecen de acuerdo con el nivel que establecí. Mientras que los registros de apache no. Gran ayuda. Gracias.
Arun Thundyill Saseendran
Es probable que varíe según su situación, pero para deshabilitar el registro terriblemente detallado habilitado de inmediato con AWS SDK, este es el único que funcionó.
Matt Baker, el
11

Tomó demasiado tiempo descubrir esto, pero JWebUnit viene incluido con el componente de registro Logback , por lo que ni siquiera usará log4j.propertiesocommons-logging.properties .

En su lugar, cree un archivo llamado logback.xmly colóquelo en su carpeta de código fuente (en mi caso 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>

El inicio de sesión parece estar todavía en desarrollo y la API parece estar cambiando, por lo que este ejemplo de código puede fallar en el futuro. Vea también esta pregunta de StackOverflow .

jevon
fuente
1
Tú, bonita. Casi mato a un gato por esta cosa. Me estaba volviendo loco.
Manish Patel
Esta fue la solución para mí. Creo que se debe a que otras bibliotecas incluía el logback incluido de forma transitiva, por lo que se bloqueó en este registrador.
Nathan
10

Tuve este problema al usar RestAssured con JUnit. Para mí, este enfoque programático funcionó:

@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
fuente
2
Fantástico, la única solución me funcionó. Muchas gracias.
lasote
¡Gracias! Estaba usando exactamente el mismo código al comienzo del método de prueba, no hizo nada. Colocarlo en su propio @Beforeo @BeforeClassfunción funcionó maravillosamente.
ExactaBox
8

Utilizamos XML, en lugar de un archivo de propiedades, para configurar nuestra salida de registro. El siguiente código funcionó para silenciar esta charla.

<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>
Barclay
fuente
4

En su log4.properties: ¿tiene este conjunto como lo hago a continuación y no hay otros org.apache.httpregistradores establecidos en el archivo?

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

Además, si no tiene ningún nivel de registro especificado org.apache.httpen su archivo de propiedades log4j, heredará el log4j.rootLoggernivel. Entonces, si se ha log4j.rootLoggerconfigurado para decir ERROR y eliminar la org.apache.httpconfiguración en sus propiedades log4j.que debería hacer que solo registre ERRORmensajes solo por herencia.

ACTUALIZAR:

Cree un commons-logging.propertiesarchivo y agregue la siguiente línea. También asegúrese de que este archivo esté en su CLASSPATH.

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

Se agregó un archivo log4j completo y el código para invocarlo para el OP. Este log4j.properties debe estar en su CLASSPATH. Estoy asumiendo stdout por el momento.

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

Aquí hay un código que debe agregar a su clase para invocar al registrador.

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
}
Frijoles
fuente
No necesitaba un archivo log4j.properties antes de intentar usar HttpClient. Intenté poner sus líneas en mi archivo src / test / resources / log4j.properties pero no hizo ninguna diferencia. ¿Es incluso correcto poner opciones commons.logging en log4j.properties?
Matt Baker,
Sí commons-logging es solo una envoltura alrededor de log4j. ¿Cómo invocas al registrador en tu clase de prueba?
CoolBeans
(Después de su actualización) Lo hice para que la línea anterior fuera la única en mi archivo log4j.properties y todavía escupe todo.
Matt Baker,
1
No invoco al registrador, HttpClient lo hace solo.
Matt Baker,
En el enlace que proporcionó dice: "Nota: Log4j no está incluido en la distribución HttpClient". Entonces definitivamente debes agregarlo a tu CLASSPATH. ¿Está viendo la salida en stdout (consola) o en un archivo de registro? Crearé un archivo log4h de muestra con código para invocarlo por usted.
CoolBeans
4

Manera simple Log4j y HttpCLient (v3.1 en este caso, debería funcionar para versiones superiores, podría requerir cambios menores)

¡Asegúrese de que todas las dependencias sean correctas, y MD5 sus descargas!

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
fuente
¿Debo colocarlo en el mainmétodo?
analizador
@parsecer puedes
WiR3D
4

He estado plagado por el mismo problema desde hace bastante tiempo y finalmente decidí investigarlo. Resultó que el problema es que mi proyecto tenía una dependencia en http-builder-0.5.2.jar que agrupaba un archivo log4j.xml dentro de sí mismo. Y, efectivamente, ¡el nivel de registro para org.apache.http.wire fue DEBUG! La forma en que lo encontré fue simplemente revisar todos los archivos jar en mis dependencias y hacer "jar tvf" y grepping para log4j.

Si bien este descubrimiento condujo a la solución eventual de aumentar la versión de mi dependencia de http-builder a 0.6, todavía me desconcierta lo que debe haber pasado por la mente del desarrollador al agrupar el archivo log4j.xml en el archivo jar. De todos modos, eso probablemente no sea relevante para este hilo por ahora. Pero pensé que era útil mencionar esta solución que encontré dado que cuando estaba buscando una solución antes, la mía nunca apareció. Esperemos que alguien encuentre esto útil.

paulito415
fuente
Problema similar al usar <!-- 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>. Se eliminó la dependencia y los registros desaparecieron. ¡Gracias!
adom
3

Tuve el mismo problema con JWebUnit. Tenga en cuenta que si utiliza la distribución binaria, Logback es un registrador predeterminado. Para usar log4j con JWebUnit realicé los siguientes pasos:

  • se eliminaron los tarros de Logback
  • agregue la biblioteca puente lod4j para sfl4j - slf4j-log4j12-1.6.4.jar
  • agregar log4j.properties

Probablemente no tenga que eliminar los frascos de Logback, pero necesitará algún paso adicional para forzar a slf4j a usar log4j

Lukasz Lacki
fuente
Gracias, tuve el mismo problema al usar OpenRdf. Todos los otros consejos en este hilo parecían no tener efecto hasta que eliminé los frascos de registro, ahora el registro está bastante tranquilo.
amarillion
3

Las siguientes 2 líneas resolvieron mi problema por completo:

Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.ERROR);
Logger.getLogger("httpclient").setLevel(Level.ERROR);
Tosha
fuente
Esto también funcionó para mí, pero no necesitaba el: Logger.getLogger ("org.apache.commons.httpclient"). SetLevel (Level.ERROR);
Jamel Toms
3

Agregue las líneas siguientes en el archivo de propiedad log4j y cerrará los registros http: - log4j.logger.org.apache.http = OFF

Rancho
fuente
en las pruebas unitarias (si es main, luego en main) también agregue el @BeforeClass public static void BeforeClass() { PropertyConfigurator.configure("log4j.properties"); ...}archivo log4j.properties con la línea única log4j.logger.org.apache.http = OFF debe estar en la raíz (justo arriba de la carpeta src)
Sasha Bond
3

También estaba teniendo el mismo problema. Toda la consola estaba llena de[main] DEBUG org.apache.http.wire mientras se ejecutaban las pruebas.

La solución que funcionó para mí fue crear un logback-test.xml src / test / resources / logback-test.xml como en https://github.com/bonigarcia/webdrivermanager-examples/blob/master/src/test/resources /logback-test.xml (ref - https://github.com/bonigarcia/webdrivermanager/issues/203 )

Para ver mi información de registro, reemplacé logger name = "io.github.bonigarcia" con el nombre de mi paquete

<?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
fuente
2

Me llevaron a esta publicación cuando buscaba una solución para un problema similar. La respuesta de Tim fue muy útil. como Matt Baker, solo quiero cerrar el registro de httpClient sin demasiada configuración. Como no estábamos seguros de qué implementación de registro debajo del registro común se usó, mi solución fue forzarlo usando log4j lanzando el archivo jar log4j en la ruta de clase. La configuración predeterminada de la configuración de log4j cierra la salida de depuración de cliente común-http. Por supuesto, para hacerlo más robusto, puede crear archivos common-logging.properties y log4j.properties para definir aún más sus configuraciones de registro.

bcxw
fuente
2

Intenta poner

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

en su commons-logging.properties

Safrain
fuente
2

Para apache 4.5.3, si desea mover el nivel de todos los registros del cliente http apache a Warn , use:

log4j.logger.org.apache=WARN
Adrian Elder
fuente
2

es trabajo para mí con agregar "logback.xml" en la ruta raíz de la clase y debajo de la configuración.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <logger name="org.apache" level="WARN"/>
    <logger name="httpclient" level="WARN"/>
</configuration>
Lanzisun
fuente
1

Tuve el mismo problema al ejecutar pruebas de integración de jwebunit. Lo arreglé excluyendo el inicio de sesión y agregando slf4j-log4j12, así:

<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>
David Pomeroy
fuente
1

Esto me llevó años descubrirlo una vez, necesitas esto:

log4j.logger.httpclient.wire=ERROR

Supongo que HttpClient usa "httpclient.wire" como su nombre de registrador, no "org.apache.commons.httpclient".

Mocosos astutos.

Adriaan Koster
fuente
1

Esto funcionó para mí.

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
fuente
0

La mejor solución que encontré fue usar el complemento maven enforcer para evitar que se utilicen por completo los registros comunes. Luego agregué la dependencia slf4j para iniciar sesión en su lugar. Entonces agregue lo siguiente a su pom.xml

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

y también agregue el complemento 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>
Big Daddy Software Man
fuente
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
analizador
0

Experimenté tal problema después de configurar HttpComponentsClientHttpRequestFactory para mi plantilla de descanso.

Establecer OkHttpClientHttpRequestFactory debería resolver el problema con el registro de basura.

sann05
fuente
0

Simplemente agregue estas dos dependencias en el archivo pom: lo he intentado y tengo éxito después de intentar la discusión anterior.

<!--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 e información predeterminada, mientras que Debug no estará presente; Puedes usar:

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

para definir la información que desea registrar: como Resultado Final como este. Solo la información que quiero registrar estará presente.

Herman XU
fuente
0

Intenté todas las soluciones anteriores en vano. La única opción que se me acercó más fue la que sugirió crear un logback.xml. Eso funcionó, sin embargo, nada se registró. Después de jugar con el logback.xml, esto es lo que terminé con

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

Ahora todos los niveles por debajo de DEBUG se registran correctamente.

aggaton
fuente
0

Con:

  • Log2J 2 2.11.2
  • HttpClient 4.5.7 (elasticsearch 7.0.0 rest client)
  • Usando el archivo de propiedades para configurar

Se puede agregar:

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

Con 'httpclient' en el ejemplo anterior es un nombre lógico que eliges.

(Probado en la aplicación Java 11 OpenFX).

Imifos
fuente
0

En mi caso, uso la configuración xml, y agrego esto al archivo de configuración

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

Pruebe 'log4j.logger.org.apache.http.headers = ERROR'

Fracdroid
fuente
0

Para mí, las siguientes líneas en el archivo log4j prop limpiaron todo el desorden que vino del registro de HttpClient ... ¡Hurra! :)

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
Dilip Muthukurussimana
fuente