Désactiver la journalisation HttpClient
Je suis en utilisant commons-httpclient 3.1 dans un test d'intégration de la suite. La journalisation par défaut pour HttpClient est extrêmement bruyant et je n'arrive pas à l'éteindre. J'ai essayé de suivre les instructions ici mais aucun d'eux ne fait aucune différence.
La plupart du temps je juste besoin de faire le org.apache.http.fil enregistreur de se taire. Une partie du problème est que je ne sais pas quel type de logger HttpClient est d'essayer d'utiliser et de plus le problème est que je n'ai jamais utilisé cette bibliothèque avant. J'ai essayé de créer un log4j.les propriétés de fichier et de le déposer dans mon test/dossier de ressources, la modification de la maîtrise de l'exploitation forestière.fichier de propriétés dans jre/lib, et l'envoi dans les différentes options de journalisation pour Maven, comme indiqué sur la page journalisation, et aucun d'eux ne fait aucune différence.
Toute aide est appréciée...c'est me rend fou.
Mise à JOUR: UNE correction: il semble que la sortie en question est en fait originaire à jwebunit de l'utilisation de HttpClient, non la mienne propre. De toute façon, il n'est pas souhaitable.
Mise à JOUR: Merci pour les tentatives de la mesure. J'ai essayé tout ce qui est suggéré ci-dessous, mais toujours pas de chance. J'ai un fichier commons-logging.propriétés dans mon répertoire src/test/resources dossier avec le contenu suivant
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
log4j.configuration=log4j.properties
et un fichier log4j.propriétés dans le même dossier avec le contenu suivant
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
Cependant, lorsque je lance mes tests, j'ai encore obtenir un tas de sortie comme ceci:
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]"
Cette sortie pour tout ce qui vient à travers le fil est faire de cette bibliothèque inutilisable pour moi...jusqu'à ce que j'arrive à l'éteindre. Est-il rien de spécial, j'ai besoin de faire pour obtenir ce journal de lecture de configuration dans?
- Pour tous à venir à travers ce problème: assurez-vous d'ajouter
-Dlog4j.debug
à votre VM options pour s'assurer que le bon fichier de configuration est chargé - Voir stackoverflow.com/questions/1436761/.... Extrait:
public class Main { static { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); } // Rest of class as before }
- Officiel de la doc: hc.apache.org/httpclient-3.x/logging.html
- A ce jamais résolu à l'OP. Exacte de ce problème est de me tuer.
- Est-ce résolu? Essayé beaucoup de réponses, pas de chance.
- Holy crap. Cela m'a fait revenir à HttpURLConnection
Vous devez vous connecter pour publier un commentaire.
Mise à jour
log4j.properties
inclure:Noter que si la bibliothèque Log4j n'est pas installé, HttpClient (et donc JWebUnit) va utiliser logback. Dans cette situation, de créer ou de modifier des
logback.xml
inclure:Réglage du niveau de journal à
WARN
avec Log4j en utilisant le nom du packageorg.apache.commons.httpclient
danslog4j.properties
ne fonctionnera pas comme prévu:C'est parce que la source de HttpClient (v3.1) les utilisations suivantes des noms de journaux:
Remarque: une partie de cette réponse pourrait répéter des choses que vous savez déjà (ou pense savoir), mais il est un peu de la mauvaise information qui circulent sur cette question, je vais donc commencer par le début et sort tout
java.util.logging
(JDK1.4 enregistrement)java.util.logging
)log4j.jar
sur le classpath serait la cause de sélectionner le mécanisme de journalisation il utilise, ce qui n'est probablement pas ce que vous voulezcommons-logging.properties
fichier comme par ces instructionslog4j
oujava.util.logging
sont les meilleures options pour vous.Log
mise en œuvre. par exemple, pour utiliser log4j, mettre ceci dans le fichier de propriétés:org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
, ou d'utiliser le JDK de journalisation ensembleorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
. Ceux-ci peuvent également être définies comme des propriétés du système (par exemple, à l'aide de-D
sur la ligne de commande).Qui a beaucoup d'étapes, mais c'est ce qu'il faut. Les développeurs de Apache commons ont tendance à supposer que vous aurez déjà une journalisation configuré, et ils peuvent travailler en auto-découverte.
Si ce n'est pas vrai pour vous, alors il a tendance à être un peu plus de travail pour obtenir des choses en cours d'exécution.
J'ai mis ceci dans mon fichier de configuration log4j
Cela limite la sortie à l'Alerte de niveau ou au-dessus de
Cela a fonctionné pour mes tests;
Pour log4j, ajoutez ce qui suit à
log4j.properties
(dans l'application dusource
répertoire):Pour logback, la suite
logback.xml
va tuer le bruit:Il a fallu beaucoup trop de temps à la trouver, mais JWebUnit est livré avec le Logback journalisation composant, afin de ne même pas utiliser
log4j.properties
oucommons-logging.properties
.Au lieu de cela, créez un fichier appelé
logback.xml
et le placer dans le code source de votre dossier (dans mon cas,src
):Logback semble être encore en cours de développement et l'API semble encore être en train de changer, de sorte que cet exemple de code peut échouer dans l'avenir. Voir aussi cette question StackOverflow.
Nous utilisons XML, plutôt que d'un fichier de propriétés pour configurer notre sortie d'enregistrement. Le code suivant a travaillé au silence ce bavardage.
J'ai eu ce problème pendant l'utilisation de RestAssured avec JUnit. Pour moi, cette approche programmatique travaillé:
Dans votre log4.propriétés: avez - vous de ce jeu comme je le fais ci-dessous et aucune autre
org.apache.http
enregistreurs de définir dans le fichier?Aussi, si vous n'avez pas de journal de
org.apache.http
dans votre log4j fichier de propriétés, puis il héritera de lalog4j.rootLogger
niveau. Donc, si vous avezlog4j.rootLogger
mis à disons l'ERREUR et de prendreorg.apache.http
paramètres de votre log4j.les propriétés que devrait faire qu'journalERROR
messages seulement par héritage.Mise à JOUR:
Créer un
commons-logging.properties
fichier et ajoutez la ligne suivante à elle. Assurez-vous également que ce fichier est dans votre CLASSPATH.Ajouté un formulaire de log4j fichier et le code de l'invoquer pour l'OP. Cette log4j.propriétés doivent être dans votre CLASSPATH. Je suis en supposant que stdout pour le moment.
Voici un code que vous devez ajouter à votre classe d'invoquer l'enregistreur.
Façon Simple Log4j et HttpCLient (v3.1 dans ce cas, doivent travailler de plus, pourrait nécessiter des modifications mineures)
Assurez-vous que toutes les dépendances sont corrects, et le MD5 de vos téléchargements!!!!
main
méthode?J'ai été frappé par le même problème pour un certain temps maintenant et a finalement décidé d'examiner cette question. Il s'est avéré que le problème est que mon projet a une dépendance sur http-builder-0.5.2.jar qui livré un log4j.xml fichier à l'intérieur d'elle-même. Et bien sûr, le niveau de journalisation pour org.apache.http.fil de DÉBOGAGE! La façon que j'ai trouvée c'était juste pour passer à travers tous les fichiers jar dans mon dépendances et faire "jar tvf" et grepping pour log4j.
Alors que cette découverte a mené à la solution éventuelle de monter la version de mon http-générateur de dépendance à 0,6, il me déroute toujours ce que doit ont traversé l'esprit du développeur lorsque le regroupement de la log4j.xml fichier dans le fichier jar. De toute façon, ce n'est probablement pas pertinente à ce fil de discussion pour l'instant. Mais j'ai pensé qu'il est utile de mentionner cette solution que j'ai trouvé étant donné que lorsque j'étais à la recherche d'une solution avant de maintenant, le mien n'est jamais venu. J'espère que quelqu'un va trouver cela utile.
<!-- 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>
. Retiré de la dépendance et les journaux ont disparu. Merci!!!!J'ai eu le même problème avec JWebUnit. Veuillez noter que si vous utilisez la distribution binaire puis Logback est un défaut de l'enregistreur de. Pour utiliser log4j avec JWebUnit j'ai effectué les étapes suivantes:
Probablement vous n'avez pas à supprimer Logback pots mais vous aurez besoin d'une étape supplémentaire de la force de slf4j à utiliser log4j
Les 2 lignes résolu mon problème complètement:
J'ai été amené à ce poste lors de la recherche de solution pour un problème similaire. Tim réponse a été très utile. comme Matt Baker, je veux juste arrêter httpClient journal sans trop de configuration. Comme nous n'étions pas sûrs de journalisation à la mise en œuvre sous commun d'enregistrement a été utilisé, Ma solution a été de force à l'aide de log4j par des jets de log4j fichier jar dans le chemin de classe. Le réglage par défaut de configuration log4j s'arrête commun-httpclient la sortie de débogage. Bien sûr, pour le rendre plus robuste, vous pouvez créer des courants d'enregistrement.propriétés et log4j.les propriétés des fichiers afin de mieux définir vos configurations de journalisation.
Essayer de mettre un
dans votre commons-logging.propriétés
Ajouter les lignes ci-dessous dans le fichier de propriétés log4j et il ferme le http journaux :- log4j.enregistreur.org.apache.http=OFF
Pour apache 4.5.3, si vous souhaitez déplacer le niveau pour tous http apache client qui se connecte à Avertir, utilisation:
J'ai eu ce même problème lors de l'exécution jwebunit des tests d'intégration. Je l'ai fixée par l'exclusion de logback et en ajoutant slf4j-log4j12, comme suit:
Ce qui m'a pris âges à la figure une fois, vous avez besoin de ceci:
Je suppose que HttpClient utilise "httpclient.de fil", comme son nom de l'enregistreur, pas "org.apache.commons.httpclient".
Sournois encule.
J'ai également le même problème. L'intégralité de la console a été rempli avec
[main] DEBUG org.apache.http.wire
lors de l'exécution de tests.La solution qui a fonctionné pour moi a été la création d'un logback-test.xml
src/test/resources/logback-test.xml comme dans https://github.com/bonigarcia/webdrivermanager-examples/blob/master/src/test/resources/logback-test.xml (ref - https://github.com/bonigarcia/webdrivermanager/issues/203)
Pour voir mes journalisation des infos, j'ai remplacé le nom de l'enregistreur="io.github.bonigarcia" avec mon nom de package
La meilleure solution que j'ai trouvé est d'utiliser le maven enforcer plugin afin de prévenir commons-logging d'être utilisé tout à fait. Puis j'ai ajouté slf4j dépendance pour l'enregistrement de la place. Il faut donc ajouter les lignes suivantes à votre pom.xml
et également ajouter le maven-enforcer 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
J'ai rencontré ce problème après la mise HttpComponentsClientHttpRequestFactory pour mon repos modèle.
Réglage OkHttpClientHttpRequestFactory devrait résoudre le problème avec la corbeille de journalisation.
Simplement ajouter ces deux dépendances dans le fichier pom:
J'ai essayé et réussir après avoir essayé la discussion avant.
Commons-Logging -> Logback et par défaut Info en Debug ne sera pas présent;
Vous pouvez utiliser:
pour définir les informations que vous voulez vous connecter:comme
Résultat Final
comme cette. Seulement les informations que je souhaite journal sera présent.
J'ai essayé toutes les solutions ci-dessus, en vain. Une soution qui est plus proche pour moi a été l'un suggérant la création d'un logback.xml. Qui a travaillé, cependant rien n'a été enregistré. Après avoir joué avec les logback.xml, c'est ce que j'ai fini avec
Maintenant Tous les niveaux en dessous de DÉBOGAGE seront consignées correctement.
Avec:
On peut ajouter:
Avec "httpclient" dans l'exemple ci-dessus étant un nom logique que vous choisissez.
(Testé sur Java 11 OpenFX application.)
Dans mon cas, j'utilise xml de configuration, et j'ai ajouter ceci dans le fichier de configuration