まず、私はあなたがプロセスを開始し、それから、コンソール出力を取得したい場合、あなたはたとえば、このコードを使用することができることを承知している:Javaプログラムはどのようにして独自のコンソール出力を完全に読み取ることができますか?すべての
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
を使用してログを出力しますか、ログには他の特別な方法を使用していますか?
とにかく、私は何とかこれらのすべてを聞くことができますか?
ありがとうございます。
おそらく、コンソールに出力されたテキストを自分のストリーム/リーダにリダイレクトするクラスのメモリインスタンスを検索する可能性があります。 – kukis
私はあなたがこれをやりたい理由、これが必要だと思う。ほとんどのプログラマは、出力ストリームを悪くすることを悪い考え方と考えています。コンソールからの出力をリダイレクトする方法については以下の答えが正しいですが、より多くのコンテキストが必要になる可能性があります。 – markspace
'Logger'クラスは通常' System.out'を使用しません。 'Logger'クラスは、設定に応じて、' System.err'に出力を送る 'ConsoleHandler'を使用します。しかし、ロガーはハンドラに委譲するだけで、出力メソッド自体は使用しません。 – markspace