gpt4 book ai didi

docker - supervisord:是否可以将子进程标准输出重定向回 supervisord?

转载 作者:行者123 更新时间:2023-12-02 17:52:43 25 4
gpt4 key购买 nike

我使用 supervisord 作为 Docker 容器的入口点,如 https://docs.docker.com/articles/using_supervisord/ 中所述,
我希望将所有日志写入标准输出,以便我可以利用诸如 docker logs 之类的内置工具或 systemd 的日志,尤其是在 CoreOS 上运行容器时。

对于标准错误,有 redirect_stderr=true子流程的选项,
是否有可能以某种方式将子进程 stdout 重定向回 supervisord 而不处理实际的日志文件?

最佳答案

您可以使用以下配置选项将程序的标准输出重定向到主管的标准输出:

stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0

解释:
  • 当进程打开时 /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

    关于docker - supervisord:是否可以将子进程标准输出重定向回 supervisord?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192715/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com