Pipe не принимает stdout

Pipe не принимает stdout

Я запускаю Java-программу из OS X 10.8терминала bash и пытаюсь перенаправить вывод, который она создает.

Однако при запуске этого через канал или при перенаправлении в файл вывод пустой, хотя я вижу вывод в терминале.

Чтобы проиллюстрировать это:

> java program.java
13/10/02 14:18:30 WARN some
13/10/02 14:18:30 INFO log
13/10/02 14:18:30 INFO messages
...

> java program.java > log
> cat log
>

Можно ли настроить программу Java так, чтобы она писала в другой поток, нежели stdout, но поток, который все равно выводит данные в терминал. Возможно ли это?

решение1

Естьтристандартные файлы, открытые для каждой программы stdin(стандартный ввод), stdout(стандартный вывод) и stderr(стандартная ошибка). Пишет в оба stdoutи stderrвыводится в терминале по умолчанию.

Обычно принято писать сообщения об ошибках и журналах в stderrвместо , stdoutчтобы не смешивать сообщения об ошибках и журналах с фактическим выводом программы. Вы можете перенаправить stderrс помощью 2>, например:

command 2> log

Связанный контент