【问题标题】:Logging to stdout in supervisord with docker使用 docker 在 supervisord 中记录到标准输出
【发布时间】:2015-07-15 21:38:46
【问题描述】:
我有一些需要运行 supervisord 的 docker 容器。
但是,我还没有设法让主管捕获日志并将它们输出到标准输出。主管似乎没有捕获他们的输出并以与 docker 配合得很好的方式将其吐出。我希望它前面加上进程名称或其他内容。
我该怎么做?从主管手册中不清楚。
我还会考虑使用主管以外的其他工具。它的缺点之一是它是用 python 编写的,这确实使 docker 容器膨胀。除了您的解决方案(如果有)之外,是否还有更优化的工具可以更好地与 docker 配合使用?
【问题讨论】:
标签:
logging
docker
supervisord
【解决方案1】:
我找到了使用 runit 的解决方案。
runit 的设置只是稍微复杂一些,但不是很复杂,而且日志记录工作开箱即用。
基本上你只需用apt-get install runit 安装runit。
然后创建一个运行文件复制到 /etc/service/{servicename}/run
运行文件只是一个执行服务名称的 bash 脚本。
它的标准输出是自动捕获的。
我遇到的问题是将 nginx 日志记录到标准输出和标准错误。
我遵循了将内容写入 nginx.conf 的食谱。它没有用。有效的方法很简单:
ln -sf /dev/stdout /var/log/nginx/access.log
ln -sf /dev/stderr /var/log/nginx/error.log