Как мне заставить и STDOUT, и STDERR перейти в терминал и файл журнала?

У меня есть скрипт, который будет запускаться в интерактивном режиме нетехническими пользователями. Сценарий записывает обновления состояния в STDOUT, чтобы пользователь мог быть уверен, что сценарий работает нормально.

Я хочу, чтобы и STDOUT, и STDERR были перенаправлены на терминал (чтобы пользователь мог видеть, что скрипт работает, а также видеть, была ли проблема). Я также хочу, чтобы оба потока были перенаправлены в файл журнала.

Я видел кучу решений в сети. Некоторые не работают, а другие ужасно сложны. Я разработал работоспособное решение (которое я введу в качестве ответа), но оно глупое.

Идеальным решением будет единственная строка кода, которая может быть включена в начало любого сценария, который отправляет оба потока как в терминал, так и в файл журнала.

РЕДАКТИРОВАТЬ: Перенаправление STDERR в STDOUT и передача результата в тиски работает, но это зависит от пользователей, которые помнят, чтобы перенаправить и передать вывод. Я хочу, чтобы логирование было надежным и автоматическим (вот почему я хотел бы иметь возможность встраивать решение в сам скрипт).

Ответы на вопрос(8)

Ваш ответ на вопрос