在System.err中打印某些内容时执行操作

时间:2013-05-08 17:45:36

标签: java

与主题相似 - 我正在尝试在将任何内容打印到错误流中时执行操作,但下面的代码不起作用:

try {
    System.setOut(new PrintStream("InfoLog.txt"));
    System.setErr(new PrintStream(new FileOutputStream("ErrorLog.txt") {
        public void write(int b) throws IOException {
            super.write(b);
            error();
        }
        public void write(byte[] b) throws IOException {
            super.write(b);
            error();
        }
    }));
} catch (FileNotFoundException ex) {
    Logger.getLogger(HouseCalc.class.getName()).log(Level.SEVERE, null, ex);
}

有没有办法“捕获”System.err流并在打印到文件之前进行任何操作?

1 个答案:

答案 0 :(得分:0)

确保覆盖适当的方法。仔细查看PrintStream的来源,因为他们可能会互相调用 。你想要一路走下去。

write(char cbuf[], int off, int len)

可能是你真正需要的那个。