我们如何将Java程序控制台输出重定向到多个文件?

时间:2011-04-19 09:09:27

标签: java eclipse

我们如何将eclipse控制台输出重定向到文件?我可以:

  1. Run Configuration - > Commons - > Select a file
  2. 使用System.setOut(PrintStream)System.setErr(PrintStream)
  3. 1)的问题是我需要将控制台输出记录到不同的文件而不是一个文件。

    2)的问题是它只存储由System.out.println()生成的控制台输出或抛出异常的堆栈跟踪。它不捕获其他类型的输出,例如log4j警告等。

    我们如何以编程方式将控制台输出重定向到不同的文件?

3 个答案:

答案 0 :(得分:175)

转到运行方式并选择Run Configurations - > Common,在标准输入和输出中,您也可以选择文件。

答案 1 :(得分:8)

您可以通过以下方式以编程方式设置System.out的输出:

System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("/location/to/console.out")), true));

编辑:

由于此解决方案基于PrintStream,我们可以启用autoFlush,但根据docs

  

autoFlush - 布尔值;如果为true,则刷新输出缓冲区   每当写入一个字节数组时,就有一个println方法   调用,或写入换行符或字节(' \ n')

因此,如果没有写新行,请记得手动System.out.flush()

(谢谢Robert Tupelo-Schneck)

答案 2 :(得分:0)

我们可以通过以下方式设置System类的变量来实现这个目的

System.setOut(new PrintStream(new FileOutputStream("输出文件的路径")))。此外,您需要关闭或刷新(System.out.close()或System.out.flush())变量,以便您不会丢失某些输出。

来源:http://xmodulo.com/how-to-save-console-output-to-file-in-eclipse.html