我有一个每 10 分钟运行一次的 Java 程序。我想捕获此过程的日志,例如考虑(我的程序本质上做了什么):
public static void someFunction()
{
System.setOut(new PrintStream(LOG_DIR));
System.out.append("whatever I am appending about my program")
}
在这种情况下,someFunction
将每 10 分钟从 main
调用一次。但是,它总是会覆盖 LOG_DIR
指定的文件。我认为这是因为它只是创建了一个新文件并保存了以前在文件 LOG_DIR
中的内容。因此,我尝试附加到文件末尾是多余的。
- 当每 10 分钟调用一次该函数时,我的程序如何写入某个文件的末尾?
最佳答案
最好的解决方案是利用几个现有的日志记录框架之一。但是,如果您坚持自己滚动,则需要附加到输出文件,而不是覆盖它:
System.setOut(new PrintStream(new FileOutputStream(LOG_DIR, true)));
请注意 FileOutputStream
的 boolean 参数,这指定流应以append 模式打开。
关于java - 重定向 System.out 并附加到现有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16003102/