J'utilise commons-httpclient 3.1 dans une suite de tests d'intégration. La journalisation par défaut pour HttpClient est extrêmement bruyante et je n'arrive pas à la désactiver. J'ai essayé de suivre les instructions ici, mais aucune d'elles ne fait de différence.
La plupart du temps, j'ai juste besoin de fermer l'enregistreur org.apache.http.wire. Une partie du problème est que je ne sais pas quel type d'enregistreur HttpClient essaie d'utiliser et la plupart du problème est que je n'ai jamais utilisé cette bibliothèque auparavant. J'ai essayé de créer un fichier log4j.properties et de le déposer dans mon dossier test / resources, en modifiant le fichier master logging.properties dans jre / lib et en envoyant les différentes options de journalisation à Maven comme spécifié sur la page de journalisation , et aucune d'entre elles faire une différence.
Toute aide est appréciée ... cela me rend fou.
MISE À JOUR: Une correction: il semble que la sortie en question provient en fait de l'utilisation de HttpClient par jwebunit, pas de la mienne. Quoi qu'il en soit, ce n'est pas souhaitable.
MISE À JOUR: Merci pour les tentatives jusqu'à présent. J'ai essayé tout ce qui est suggéré ci-dessous mais toujours pas de chance. J'ai un fichier commons-logging.properties dans mon dossier src / test / resources avec le contenu suivant
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
log4j.configuration=log4j.properties
et un fichier log4j.properties 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 j'exécute mes tests, j'obtiens toujours un tas de résultats comme celui-ci:
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 passe sur le fil rend cette bibliothèque inutilisable pour moi ... jusqu'à ce que je puisse comprendre comment la désactiver. Dois-je faire quelque chose de spécial pour que cette configuration de journal soit lue?
la source
-Dlog4j.debug
options à votre machine virtuelle pour vous assurer que le bon fichier de configuration est chargépublic class Main { static { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); } // Rest of class as before }
Réponses:
Mettre
log4j.properties
à jour pour inclure:Notez que si la bibliothèque Log4j n'est pas installée, HttpClient (et par conséquent JWebUnit) utilisera le retour de session. Dans cette situation, créez ou modifiez
logback.xml
pour inclure:La définition du niveau de journalisation
WARN
avec Log4j en utilisant le nom du packageorg.apache.commons.httpclient
danslog4j.properties
ne fonctionnera pas comme prévu:En effet, la source de HttpClient (v3.1) utilise les noms de journal suivants:
la source
Remarque: une partie de cette réponse peut répéter des choses que vous savez déjà (ou pensez savoir), mais il y a un peu de fausses informations flottant autour de cette question, donc je vais commencer par le début et tout préciser
java.util.logging
(journalisation JDK1.4)java.util.logging
)log4j.jar
au classpath le ferait changer le mécanisme de journalisation qu'il utilise, ce qui n'est probablement pas ce que vous voulezcommons-logging.properties
fichier selon ces instructionslog4j
oujava.util.logging
sont les meilleures options pour vous.Log
implémentation correcte . par exemple pour utiliser log4j, placez ceci dans le fichier de propriétés:,org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
ou pour utiliser le jeu de journalisation JDKorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
. Ceux-ci peuvent également être définis comme propriétés système (par exemple en utilisant-D
sur la ligne de commande).C'est beaucoup d'étapes, mais c'est ce qu'il faut. Les développeurs d'Apache-commons ont tendance à supposer que vous avez déjà configuré un cadre de journalisation et qu'ils peuvent déterminer lequel il s'agit par découverte automatique.
Si ce n'est pas le cas pour vous, il vous faudra un peu plus de travail pour faire fonctionner les choses.
la source
Je mets ceci dans mon fichier de configuration log4j
Cela limite la sortie au niveau d'avertissement ou supérieur
la source
Cela a fonctionné pour mes tests;
la source
Pour log4j, ajoutez ce qui suit à
log4j.properties
(dans lesource
répertoire de l'application ):Pour la connexion, ce qui suit
logback.xml
tuera le bruit:la source
Cela a pris beaucoup trop de temps pour le découvrir, mais JWebUnit est livré avec le composant de journalisation Logback , il n'utilisera donc même pas
log4j.properties
oucommons-logging.properties
.Au lieu de cela, créez un fichier appelé
logback.xml
et placez-le dans votre dossier de code source (dans mon cas,src
):Logback semble être encore en cours de développement et l'API semble encore en train de changer, donc cet exemple de code peut échouer à l'avenir. Voir également cette question StackOverflow .
la source
J'ai eu ce problème lors de l'utilisation de RestAssured avec JUnit. Pour moi, cette approche programmatique a fonctionné:
la source
@Before
ou sa@BeforeClass
fonction a fonctionné à merveille.Nous utilisons XML, plutôt qu'un fichier de propriétés, pour configurer notre sortie de journalisation. Le code suivant a fonctionné pour faire taire ce bavardage.
la source
Dans votre log4.properties - avez-vous cet ensemble comme je le fais ci-dessous et aucun autre
org.apache.http
enregistreur n'est défini dans le fichier?De plus, si aucun niveau de journal n'est spécifié
org.apache.http
dans votre fichier de propriétés log4j, il héritera dulog4j.rootLogger
niveau. Donc, si vous avezlog4j.rootLogger
défini, disons ERROR, et supprimez lesorg.apache.http
paramètres de votre log4j.properties, cela devrait lui permettre de ne consigner lesERROR
messages que par héritage.METTRE À JOUR:
Créez un
commons-logging.properties
fichier et ajoutez-y la ligne suivante. Assurez-vous également que ce fichier est dans votre CLASSPATH.Ajout d'un fichier log4j terminé et du code pour l'invoquer pour l'OP. Ce log4j.properties doit être dans votre CLASSPATH. Je suppose stdout pour le moment.
Voici du code que vous devez ajouter à votre classe pour appeler le logger.
la source
Manière simple Log4j et HttpCLient (v3.1 dans ce cas, devrait fonctionner pour une version supérieure, pourrait nécessiter des modifications mineures)
Assurez-vous que toutes les dépendances sont correctes, et MD5 vos téléchargements !!!!
la source
main
méthode?Je suis en proie au même problème depuis un certain temps maintenant et j'ai finalement décidé de me pencher sur la question. Il s'est avéré que le problème était que mon projet avait une dépendance sur http-builder-0.5.2.jar qui regroupait un fichier log4j.xml en lui-même. Et bien sûr, le niveau de journalisation de org.apache.http.wire était DEBUG! La façon dont je l'ai trouvé était juste de parcourir tous les fichiers jar de mes dépendances et de faire "jar tvf" et grepping pour log4j.
Bien que cette découverte ait conduit à la solution éventuelle d'augmenter la version de ma dépendance http-builder à 0.6, cela me déroute toujours ce qui a dû passer par l'esprit du développeur lors du regroupement du fichier log4j.xml dans le fichier jar. Quoi qu'il en soit, ce n'est probablement pas pertinent pour ce fil pour le moment. Mais j'ai pensé qu'il était utile de mentionner cette solution que j'ai trouvée étant donné que lorsque je cherchais une solution auparavant, la mienne ne s'est jamais présentée. J'espère que quelqu'un trouvera cela utile.
la source
<!-- 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>
. Suppression de la dépendance et les journaux ont disparu. Je vous remercie!J'ai eu le même problème avec JWebUnit. Veuillez noter que si vous utilisez une distribution binaire, Logback est un enregistreur par défaut. Pour utiliser log4j avec JWebUnit, j'ai effectué les étapes suivantes:
Vous n'avez probablement pas à supprimer les fichiers jar Logback, mais vous aurez besoin d'une étape supplémentaire pour forcer slf4j à utiliser log4j
la source
Les 2 lignes suivantes ont complètement résolu mon problème:
la source
Ajoutez les lignes ci-dessous dans le fichier de propriétés log4j et il fermera les journaux http: - log4j.logger.org.apache.http = OFF
la source
@BeforeClass public static void BeforeClass() { PropertyConfigurator.configure("log4j.properties"); ...}
fichier log4j.properties avec la seule ligne log4j.logger.org.apache.http = OFF devrait être à la racine (juste au-dessus du dossier src)J'avais aussi le même problème. La console entière était remplie
[main] DEBUG org.apache.http.wire
lors de l'exécution des tests.La solution qui a fonctionné pour moi a été de créer 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 (réf - https://github.com/bonigarcia/webdrivermanager/issues/203 )
Pour afficher mes informations de journalisation, j'ai remplacé logger name = "io.github.bonigarcia" par le nom de mon package
la source
J'ai été amené à ce poste lors de la recherche d'une solution à un problème similaire. La réponse de Tim a été très utile. comme Matt Baker, je veux juste fermer le journal httpClient sans trop de configuration. Comme nous ne savions pas quelle implémentation de journalisation sous Common-logging était utilisée, ma solution était de la forcer à utiliser log4j en lançant le fichier jar log4j dans le chemin de classe. Le paramètre par défaut de la configuration log4j arrête la sortie de débogage common-httpclient. Bien sûr, pour le rendre plus robuste, vous pouvez créer des fichiers common-logging.properties et log4j.properties pour définir davantage vos configurations de journalisation.
la source
Essayez de mettre
dans votre commons-logging.properties
la source
Pour apache 4.5.3, si vous souhaitez déplacer le niveau de toutes les journalisations du client http apache vers Warn , utilisez:
la source
cela fonctionne pour moi avec ajouter "logback.xml" dans le chemin racine de la classe et en dessous du paramètre.
la source
J'ai eu ce même problème lors de l'exécution des tests d'intégration jwebunit. Je l'ai corrigé en excluant logback et en ajoutant slf4j-log4j12, comme ceci:
la source
Cela m'a pris du temps à comprendre une fois, vous en avez besoin:
Je suppose que HttpClient utilise "httpclient.wire" comme nom d'enregistreur, et non "org.apache.commons.httpclient".
Buggers sournois.
la source
Cela a fonctionné pour moi.
la source
La meilleure solution que j'ai trouvée était d'utiliser le plugin maven enforcer afin d'éviter que la journalisation des communs ne soit complètement utilisée. Ensuite, j'ai ajouté la dépendance slf4j pour la journalisation à la place. Alors ajoutez ce qui suit à votre pom.xml
et ajoutez également le plugin maven-enforcer
la source
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é un tel problème après avoir défini HttpComponentsClientHttpRequestFactory pour mon modèle de repos.
La configuration de OkHttpClientHttpRequestFactory devrait résoudre le problème de journalisation de la corbeille.
la source
Ajoutez simplement ces deux dépendances dans le fichier pom: j'ai essayé et réussi après avoir essayé la discussion avant.
Commons-Logging -> Logback et informations par défaut pendant que le débogage ne sera pas présent; Vous pouvez utiliser:
pour définir les informations que vous souhaitez enregistrer: comme Résultat final comme ceci. Seules les informations que je souhaite enregistrer seront présentes.
la source
J'ai essayé toutes les solutions ci-dessus en vain. La solution la plus proche pour moi était celle suggérant de créer un logback.xml. Cela a fonctionné, mais rien n'a été enregistré. Après avoir joué avec le logback.xml, c'est ce que j'ai fini avec
Désormais, tous les niveaux inférieurs à DEBUG sont correctement enregistrés.
la source
Avec:
On peut ajouter:
Avec 'httpclient' dans l'exemple ci-dessus étant un nom logique que vous choisissez.
(Testé sur l'application Java 11 OpenFX.)
la source
Dans mon cas, j'utilise la configuration xml, et je l'ajoute au fichier de configuration
la source
Essayez 'log4j.logger.org.apache.http.headers = ERREUR'
la source
Pour moi, les lignes ci-dessous dans le fichier prop log4j ont nettoyé tous ces dégâts qui provenaient de la journalisation HttpClient ... Hourra !!! :)
la source