supervisord:是否有可能将subprocessstdoutredirect回supervisord?
我使用supervisord作为Docker容器的入口点,如https://docs.docker.com/articles/using_supervisord/中所述 ,我希望将所有日志写入stdout,以便我可以利用docker logs
等内置工具或systemd的日志,尤其是在CoreOS上运行容器时。
对于stderr有subprocessredirect_stderr=true
选项,是否有可能redirect到supervisord子处理stdout不知道怎么处理实际的日志文件?
您可以使用以下configuration选项将程序的stdoutredirect到supervisor的stdout:
stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0
说明:
- 当进程打开
/dev/fd/1
(与/proc/self/fd/1
)时,系统实际上会克隆该进程的文件描述符#1(stdout)。 因此,使用这个stdout_logfile
会导致supervisord
将程序的stdoutredirect到它自己的stdout。 -
stdout_logfile_maxbytes=0
禁用日志文件的旋转,这对stdout显然没有意义。 不指定此选项会导致错误,因为默认值是50MB,而且pipe理程序不够智能,无法检测到指定的日志文件不是常规文件。
了解更多信息:
http://veithen.github.io/2015/01/08/supervisord-redirecting-stdout.html