Y a-t-il un moyen que je peux attraper quand une méthode génère une écriture dans STDERR? J'essaye de pré-attacher quelques informations avec chaque écriture STDERR.Comment ajouter des informations à STDERR lorsqu'une méthode génère stderr?
disons que notre méthode est:
parser.thatGeneratesSTDERR();
ça va générer quelque chose comme
ligne 37:29 pas d'alternative viable au caractère 'a'
puis-je envelopper juste avec quelque chose qui attrape le stderr à écrire et pré-pend quelques informations donc ça va ressembler à ceci:
Fichier: mybadfile.txt - ligne 37:29 aucune alternative viable au caractère « a »
Je sais que je pourrais probablement creuser à travers le code réel qui fait l'écriture STDERR mais je ne veux vraiment pas fais ça - je préfère juste emballer du code autour de cette méthode à la place.
Je dois noter que cette méthode ne génère pas toujours STDERR - la raison pour laquelle j'essaie de les attraper, c'est qu'elle NE DEVRAIT PAS générer de STDERR - mais puisque cela est appelé sur plusieurs fichiers (plus de 40) Je ne sais jamais quel fichier génère le message d'erreur - il faut toujours trouver.
MISE À JOUR si Yeh, nous pouvons changer notre STDERR - Je viens oubliais que je dois remplacer mon println dans ma nouvelle STDERR ... voici le code correspondant:
public static String errfile = "";
static {
final PrintStream currentErr = System.err;
PrintStream newErr = new PrintStream(currentErr)
{
public void println(String string) {
print("File: " + errfile + " --");
print(string);
super.println();
}
};
System.setErr(newErr);
}
puis pour chaque fichier que je teste tout ce que j'ai à faire est de changer errfile pour le nom de fichier et ma sortie sort attendue ...
merci beaucoup!
Je ne suis pas sûr que ce soit une bonne pratique pour faire la finale PrintStream. - Il semble y avoir aussi un bug dans votre code, puisque je ne pouvais pas le faire fonctionner. –