java - 重定向 System.out 并附加到现有文件

标签 java file logging io-redirection

我有一个每 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 中的内容。因此,我尝试附加到文件末尾是多余的。

  1. 当每 10 分钟调用一次该函数时,我的程序如何写入某个文件的末尾?

最佳答案

最好的解决方案是利用几个现有的日志记录框架之一。但是,如果您坚持自己滚动,则需要附加到输出文件,而不是覆盖它:

System.setOut(new PrintStream(new FileOutputStream(LOG_DIR, true)));

请注意 FileOutputStream 的 boolean 参数,这指定流应以append 模式打开。

关于java - 重定向 System.out 并附加到现有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16003102/

相关文章:

java - 如何在 Java 中搜索子文件夹并用新数据重新绘制 jTable?

python - 按列排序列表

.net - 如何在企业库4.0中创建自定义日志过滤器?

python - 文件处理程序的日志级别与记录器的日志级别

java - Android中Thread.currentThread().getId()和Process.myTid()的区别

java - 使用 XSL 中的样式将 XML 转换为 PDF

java - Intellij - JAVA 错误(导入等...)未检测到

python - 解析文本文件时出现问题(编码?)

java - 上下文无法解析为类型

跨多个线程的 Java 日志记录