【问题标题】:get list of active system.out printstreams获取活动 system.out 打印流列表
【发布时间】:2018-06-06 12:32:50
【问题描述】:
我试图使用 System.out.println 来帮助调试,但我发现它没有打印到控制台。经过检查,我发现我的程序创建了 4 个输出控制台(一个用于 Java DB 进程,一个用于 DB 服务器,一个用于调试程序,一个用于程序输出)。我在一个意外的控制台 - 数据库服务器输出中找到了我预期的 println。
我想处理这些输出。我希望 System 类有一个活动输出控制台( printstreams )的列表字段,例如:
ArrayList<PrintStream> getActivePrintOutputs()
但我没有看到。我如何获得它们?
【问题讨论】:
标签:
java
system.out
printstream
【解决方案1】:
System 没有超出out 和err 指定的多个输出流的概念,您可以通过分别引用System.out 和System.err 来访问它们。
如果使用了其他控制台或输出流,它们一定是由您代码中的其他点(或您正在使用的库代码中的其他点)创建的。
【解决方案2】:
通常您只有一个活动的System.out 输出流,因此系统没有理由维护一个列表。
如果您想跟踪所有创建的 PrintStream,您可以使用检测来跟踪它们的创建,或者在类的构造函数中放置一个断点并调试您的程序。
注意:程序为不同目的创建多个日志文件是正常的,这些可能是您正在考虑的 PrintStreams。