Bonjour,
je voudrais savoir s'il existe un moyen de ne pas afficher sur la console les exceptions survenant durant un job ?
J'ai essayé en utilisant les composants tDie, tLogCatcher mais les exceptions s'affichent toujours à la console
Merci
Bonjour,
je voudrais savoir s'il existe un moyen de ne pas afficher sur la console les exceptions survenant durant un job ?
J'ai essayé en utilisant les composants tDie, tLogCatcher mais les exceptions s'affichent toujours à la console
Merci
Si ton job est écrit en Java, il te suffit d'utiliser un composant tJava en début de job pour rediriger les flux d'écriture vers autre chose que la console (fichier, nulle part, etc.) :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 System.setOut(...); System.setErr(...);
Merci !
J'ai utilisé : :
System.setOut(new PrintStream(new FileOutputStream("NUL:")));
System.setErr(new PrintStream(new FileOutputStream("NUL:")));
et cela a l'air de fonctionner.
Je fais quelques tests complémentaires
Petite remarque :
De manière très théorique, c'est quand même un peu dangereux de perdre ces informations...
Lorsqu'il y aura un problème sur le job, tu n'auras aucune info sur l'origine du problème.
Nicolas
Mon but est de pouvoir traiter les erreurs sans forcément avoir une grosse exception qui s'affiche dans la console.
Je récupère quand même les erreurs (exceptions) avec le tDie, tLogcatcher, etc...
Je suis d'accord, mais dans certains composants, les "System.out" et "System.err" sont gravés en dur dans le code du composant.
Donc, pour les supprimer, on a le choix entre "modifier le composant" et "rediriger les flux standards". Cependant, rien n'oblige à les rediriger vers le néant. On peut aussi les envoyer vers un fichier.
Un cas typique d'utilisation, c'est quand on doit livrer le batch développé à un service d'industrialisation très chatouilleux sur le fait qu'un batch ne doit pas écrire dans la console.
Au passage, c'est pour répondre à ces problématiques de traçabilité que j'ai développé les composants "Logback" et "Log4J".
Je pense que tu ne pourras pas utiliser le FileOutputStream sans lui fournir un véritable chemin de fichier. Sur Unix/Linux/Mac, on peut facilement s'en sortir avec "/dev/null".
Sous Windows, pas d'équivalent à ma connaissance. Si tu veux absolument te débarrasser de ces flux, il va falloir créer ton propre OutputStream qui ne fait rien :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class NopOutputStream extends OutputStream { @Override public void write(int b) { // Ne rien faire } }
Attention, l'avertissement de DevNico sur les risques (difficulté de débuggage) s'applique...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager