当方法生成对STDERR的写入时,有什么方法可以捕获? 我试图预先将每个STDERR写入一些信息。当一个方法生成stderr时,我如何将信息添加到STDERR?
比方说,我们的方法是:
parser.thatGeneratesSTDERR();
它会产生类似
线在37:29没有性格可行的替代 'A'
可我只是把它包有些东西可以捕捉到stderr被写入并预先登录一些 信息,所以它会看起来像这样:
文件:mybadfile.txt - 线在37:29字符“一”
我知道我可以通过实际的代码,不会选择错误的写作,但我真的不想掏大概没有可行的替代方案这样做 - 我宁愿只是围绕此方法包装一些代码。
我应该注意到,这种方法并不总是生成STDERR--我试图捕捉它们的原因是它不应该生成任何STDERR - 但是因为这被称为相当多的文件(超过40)我永远不知道哪个文件正在产生错误消息 - 它需要永远找到。
UPDATE 所以叶,我们可以改变我们的STDERR - 我只是忘了,我需要重写我的println在我的新STDERR ......这里的相关代码:
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更改为文件名,我的输出结果出来了...
非常感谢!
我不确定是否让PrintStream最终成为一个好习惯。 - 你的代码中似乎也有一些错误,因为我无法使它工作。 – 2009-10-21 22:55:52