首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将Java程序控制台输出重定向到多个文件?

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

Stack Overflow用户
提问于 2011-04-19 17:09:27
回答 5查看 153.5K关注 0票数 163

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

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

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

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

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

EN

回答 5

Stack Overflow用户

发布于 2012-04-17 16:28:00

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

票数 176
EN

Stack Overflow用户

发布于 2015-05-03 20:15:09

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

代码语言:javascript
复制
/tmp/FetchBlock-${current_date}.txt

current_date:

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

或者,您也可以使用system_property或env_var来指定一些动态内容(其中任何一个都需要指定为参数)

票数 11
EN

Stack Overflow用户

发布于 2014-12-18 16:00:16

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

代码语言:javascript
复制
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)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5714053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档