Я запускаю 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