是否可以将Java中的标准输出设置为文件和标准输出?

时间:2017-12-06 09:26:41

标签: java redirectstandardoutput

有一个Java命令可以将标准输出重定向到文件或返回到  标准输出:

PrintStream stdout = System.out;
System.setOut(new PrintStream(logFile));
// ...
System.setOut(stdout); 

但我需要同时拥有它们。是否可以在Java中将标准输出设置为文件和标准输出?

2 个答案:

答案 0 :(得分:3)

我不知道有一个标准类这样做,但它非常简单:

  • 首先获取“普通”stdout PrintStream
  • 编写自己的PrintStream实现,将文件写入另一个Printstream
  • 只需将原始stdout传递给您的新DoublePrintingPrintStream,然后使用setOut()来使用“双打印”流

或者,有tee之类的工具可以为您做到这一点。因此,不要用它来打扰你的Java代码 - 只需在外面读取stdout,打印到控制台并写入文件。

答案 1 :(得分:-1)

使用记录器。如果需要,只需输入布局。 然后,您甚至可以在代码中添加 ConsoleAppender FileAppender

更好的代码风格。那个“logFile”正在讲述。