メソッドが STDERR への書き込みを生成するときにキャッチできる方法はありますか? 各STDERR書き込みでいくつかの情報を事前に保留しようとしています。
私たちの方法は次のとおりです。
parser.thatGeneratesSTDERR();
次のようなものが生成されます
行 37:29 文字 'a' で実行可能な代替手段がありません
stderr が書き込まれるのをキャッチする何かでそれをラップし、いくつかの情報を前に保留して、代わりに次のように見えるようにすることはできますか:
ファイル: mybadfile.txt -- 行 37:29 文字 'a' に実行可能な代替手段がありません
STDERR 書き込みを行う実際のコードを掘り下げることができることはわかっていますが、実際にはそうしたくありません。代わりに、このメソッドの周りにいくつかのコードをラップするだけです。
このメソッドは常に STDERR を生成するとは限らないことに注意する必要があります-私がそれらをキャッチしようとしている理由は、STDERR を生成するべきではないということです-しかし、これはかなりの数のファイル (40 以上) で呼び出されるため、私はどのファイルがエラー メッセージを生成しているかわかりません。見つけるのに永遠に時間がかかります。
更新 して、STDERRを変更できるようにします-新しいSTDERRでprintlnをオーバーライドする必要があることを忘れていました...関連するコードは次のとおりです。
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);
}
次に、テストしている各ファイルに対して、errfileをファイル名に変更するだけで、出力が期待通りになります...
どうもありがとう!