8
votes

Comment arrêter une bibliothèque Java de l'impression à la console?

J'utilise une bibliothèque qui imprime un tas d'informations superflues à la console lorsque je le réfère. Y a-t-il un moyen de faire taire la sortie de la bibliothèque?


0 commentaires

7 Réponses :


0
votes

Je ne pense pas que la bibliothèque décente / sain utilise System.out pour enregistrer les messages. Donc, je peux supposer en toute sécurité que c'est en utilisant une sorte de cadre forestier. Configurez que le package particulier doit être à un niveau de journalisation plus élevé comme «erreur» ou «fatal» afin de ne pas voir ces messages.


0 commentaires

0
votes

La bibliothèque utilise probablement un enregistreur, log4J ou SLF4J. Il est possible que vous puissiez créer un fichier de configuration pour cet enregistreur, puis définir le niveau de journal pour avertir ou supérieur. Cela arrêtera les informations d'être imprimées.


0 commentaires

7
votes

Avez-vous essayé de définir le canal OUT et ARR avec system.setout () et system.seterr () ?


0 commentaires

16
votes

Si cela utilise un cadre de journalisation (log4J, journalisation des communes, etc.), vous pouvez modifier / créer un fichier de propriétés pour indiquer un titre de journalisation élevé. Dans Log4J, cela ressemblerait à: xxx

si la bibliothèque utilise system.out , ce n'est pas une bonne bibliothèque en premier lieu. Vous pouvez modifier le imprimanteam en appelant system.setout (YourDamyPrintStream) (et system.seterr (..) ). Votre flux d'impression factice vaudrait simplement avaler les données et ne pas l'imprimer n'importe où.


0 commentaires

5
votes

J'ai voté de la réponse de Jan et j'ai voulu ajouter:

Utilisation de la définition signifie que vous ne pouvez plus imprimer à System.out dans votre programme.

Vous pouvez faire < pré> xxx

premier à enregistrer, puis appelez la configuration pour le changer - puis imprimez simplement sur OLDOUT.

Je suis allé jusqu'à ce que j'utilise cela comme une mini- Logger - saisissez le système.out, remplacez-le par mon propre flux et mon propre flux saisissez une trace de pile et déterminez la méthode d'appel afin qu'elle puisse ajouter le nom de la méthode avant de transférer au système d'origine.out.

terriblement lent, mais bon pour le débogage. Avait un réglage afin que vous puissiez revenir à l'impression de la chaîne, masquer toute sortie ou filtre par quelle méthode le message provenait (qui était mon utilisation principale, caché toutes les autres ordures afin que je puisse voir mon propre rendement).


0 commentaires

2
votes

envisagez d'utiliser AspectJ, qui peut remplacer toutes les occurrences de system.out.println () avec un relevé de votre choix, une instruction logement de manière proprée. Cela fonctionne également avec des fichiers JAR 3ème partie (recherchez le tissage de temps de charge).


0 commentaires

0
votes

Si la lib utilise des impressions, j'utiliserais ASM pour remplacer tous les sys.out.printxxx avec un appel à une autre classe avec des signatures de méthode similaires qui avalent etc.


0 commentaires