【发布时间】:2014-10-04 12:15:40
【问题描述】:
我使用 supervisord 作为 Docker 容器的入口点,如 https://docs.docker.com/articles/using_supervisord/ 中所述,
我希望将所有日志写入标准输出,这样我就可以利用 docker logs 或 systemd 的日志等内置工具,尤其是在 CoreOS 上运行容器时。
对于 stderr,子进程有 redirect_stderr=true 选项,
是否可以以某种方式将子进程 stdout 重定向回 supervisord 而不处理实际的日志文件?
【问题讨论】:
-
由于主管是一个守护进程,我不确定“stdout”有什么真正的意义——它没有连接到终端或任何有用的地方。接收输出的任何东西也无法区分哪个输出来自哪个子流程,这将严重限制其有用性。也许您真正需要的是一种将每个输出通过管道传输到命令的方法,也许是使用命名管道 (FIFO)?
-
实际上,如果它用作 Docker 容器的入口点,它会在前台运行
-
嗯,可能。不过,关于所有输出合并在一起的观点是站得住脚的。似乎真正的问题是“我可以让主管子进程登录到服务 X 而不是文件吗?”
-
github.com/ddollar/foreman 实际上在将日志合并到标准输出方面做得很好,它的问题是它不打算在生产中运行并且它不处理子进程的重新启动,如果他们崩溃了
标签: docker supervisord coreos