繁体   English   中英

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

[英]How can we redirect a Java program console output to multiple files?

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

  1. Run Configuration -> Commons -> Select a file
  2. 使用System.setOut(PrintStream)System.setErr(PrintStream)

1) 的问题是我需要将控制台输出记录到不同的文件而不是一个文件。

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

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

转到 run as 并选择Run Configurations -> Common ,在标准输入和输出中,您也可以选择一个文件。

您可以在输出文件名中使用“变量”,例如:

/tmp/FetchBlock-${current_date}.txt

当前的日期:

返回格式为 yyyyMMdd_HHmm 的当前系统时间。 可选参数可用于提供替代格式。 参数必须是 java.util.SimpleDateFormat 的有效模式。

或者你也可以使用 system_property 或 env_var 来指定一些动态的东西(其中一个需要被指定为参数)

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

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

编辑:

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

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

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

(感谢罗伯特·图珀洛-施内克)

为了解决这个问题,我使用了 ${string_prompt} 变量。 它在应用程序运行时显示一个输入对话框。 我可以在该对话框中手动设置日期/时间。

  1. 将光标移动到文件路径的末尾。 在此处输入图片说明

  2. 单击变量并选择string_prompt 在此处输入图片说明

  3. 选择应用并运行在此处输入图片说明 在此处输入图片说明

我们可以通过以下方式设置 System 类的变量来做到这一点

System.setOut(new PrintStream(new FileOutputStream("Path to output file")))。 此外,您需要关闭或刷新 'out'(System.out.close() 或 System.out.flush()) 变量,以免最终丢失某些输出。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM