首先,我知道如果你想启动一个进程并获取它的控制台输出,你可以使用以下代码:
ProcessBuilder builder = new ProcessBuilder(command);
builder.redirectErrorStream(true);
Process proc;
proc = builder.start();
InputStreamReader isr = new InputStreamReader(proc.getInputStream());
BufferedReader reader = new BufferedReader(isr);
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
但是如果我想要获取当前正在运行的Java程序的整个控制台输出怎么办?能否在不漏掉任何内容的情况下读取它?我确定用于在控制台中显示文本的程序在某些地方使用
System.out.println()
,在大多数情况下它使用许多java.util.logging.Logger
实例,并且可能还有其他一些方法。顺便问一下,
Logger
类最终是简单地使用System.out
打印文本,还是使用其他特殊的记录方法?无论如何,我是否可以以某种方式监听所有这些内容?
提前感谢。
Logger
类通常不使用System.out
。根据配置,Logger
类可能会使用ConsoleHandler
,将输出发送到System.err
。但是,该记录器仅委托处理程序,它本身不使用任何输出方法。 - markspace