Труба не поднимает 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 , но поток, который все еще производит вывод в терминале. Возможно ли это?

One Solution collect form web for “Труба не поднимает stdout”

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

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

 command 2> log 
  • Какова связь между выходом программы, стандартным выходом и файловыми дескрипторами?
  • Чтение данных из канала в течение определенного времени (в секундах)
  • Перенаправление Stderr неожиданно перенаправляет также некоторые встроенные функции BASH
  • где находится stdin, stdout, дескриптор файла stderr в AIX (unix)
  • Система больше не выводит символы UTF-8
  • Как получить вывод команды timeout без использования сценария оболочки
  • выборочный stdout, stderr и ведение журнала с помощью команды script
  • Команды трубопровода, изменить запись stdin в stdout
  • Чтение и запись в файл из stdin и stdout
  • Почему задания не убиваются при выходе из системы при выполнении с помощью «> / dev / null 2> & 1 &"?
  • Перенаправить stdout программы командной строки Windows под вином
  • Linux и Unix - лучшая ОС в мире.