Назад | Перейти на главную страницу

Daemontools - ведение журнала stderr и stdout отдельно

Согласно документации, которую мне удалось найти, daemontools рекомендует перехватить stderr (или любой другой файловый дескриптор), перенаправив его на stdout. Если в вашем сервисе есть log/run script, стандартный вывод вашего демона будет передан по конвейеру.

Это, очевидно, означает, что stderr и stdout смешиваются в выводе регистратора. Есть ли у кого-нибудь опыт захвата stdout и stderr отдельно в процессе, управляемом daemontools?

Для меня это похоже на вопрос оболочки: «Как мне отправить stderr и stdout по отдельности?» Предполагая синтаксис bash или Bourne-ish:

# 3 goes to wherever stdout is pointing
exec 3>&1
# send stdout of this cmd to FD 3, stderr somewhere else
eval $command 2>&1 1>&3 | sed 's/^/stderr from pipe: /'
# close FD 3
exec 3>&-