我有一个使用System.setErr()的服务器程序用作日志记录。我在关闭最后一个PrintStream并打开一个新的写入对象时遇到问题。
这是它的初始化方式:
File file = new File("file" + "_.txt");
for (int i = 1; file.exists(); i++) {
file = new File(String.format("file" + "_%d.txt", i));
}
System.setErr(new PrintStream(new BufferedOutputStream(new FileOutputStream(file)), true));
这是重新启动的方式:
System.err.flush();
System.err.close();
File file = new File("file" + "_.txt");
for (int i = 1; file.exists(); i++) {
file = new File(String.format("file" + "_%d.txt", i));
}
System.setErr(new PrintStream(new BufferedOutputStream(new FileOutputStream(file)), true));
问题在于,发送到System.err的新PrintStream的任何内容都不会打印。仅打印其中的一部分,但大部分(在多个线程中)不打印。
希望得到一些帮助, 谢谢!