Daemontools - 分别记录 stderr 和 stdout

Daemontools - 分别记录 stderr 和 stdout

根据我找到的文档,daemontools 推荐的捕获 stderr(或任何其他文件描述符)的方法是将其重定向到 stdout。如果您的服务有脚本log/run,则守护进程的 stdout 将通过管道传输到该脚本。

这显然意味着 stderr 和 stdout 混合在记录器的输出中。有人在 daemontools 管理的进程中分别捕获 stdout 和 stderr 的经验吗?

答案1

对我来说这看起来像是一个 shell 问题“我如何将 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>&-

相关内容