Gal*_*aim 5 supervisord docker coreos
我使用 supervisord 作为 Docker 容器的入口点,如https://docs.docker.com/articles/using_supervisord/ 中所述,我希望所有日志都写入标准输出,以便我可以利用内置工具,如docker logs或 systemd 的日志,尤其是在 CoreOS 上运行容器时。
对于 stderr 有redirect_stderr=true子进程选项,是否可以以某种方式将子进程 stdout 重定向回 supervisord 而不是处理实际的日志文件?
您可以使用以下配置选项将程序的标准输出重定向到主管的标准输出:
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
Run Code Online (Sandbox Code Playgroud)
解释:
/dev/fd/1(与 相同/proc/self/fd/1),系统实际上会克隆该进程的文件描述符 #1 (stdout)。stdout_logfile因此使用它会导致supervisord将程序的标准输出重定向到它自己的标准输出。stdout_logfile_maxbytes=0禁用日志文件轮换,这对于标准输出显然没有意义。不指定此选项将导致错误,因为默认值是 50MB,并且 supervisor 不够聪明,无法检测到指定的日志文件不是常规文件。想要查询更多的信息:
http://veithen.github.io/2015/01/08/supervisord-redirecting-stdout.html
| 归档时间: |
|
| 查看次数: |
2486 次 |
| 最近记录: |