[英]How can we redirect a Java program console output to multiple files?
我们如何将 eclipse 控制台输出重定向到一个文件? 我可以:
Run Configuration
-> Commons
-> Select a file
。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()
。
(感谢罗伯特·图珀洛-施内克)
我们可以通过以下方式设置 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.