使用 docker 登录到 supervisord 中的标准输出

Logging to stdout in supervisord with docker

我有几个 docker 容器需要 运行 supervisord。

但是,我还没有设法让主管捕获日志并将它们输出到标准输出。主管似乎没有捕获他们的输出并以与 docker 配合良好的方式吐出它。我希望它以进程名称或其他名称作为前缀。

我该怎么做? supervisor manual上看不清楚。

除了 supervisor,我还会考虑使用其他工具。它的缺点之一是它是用 python 编写的,这确实使 docker 容器膨胀。除了您的解决方案(如果有的话),是否有更优化的工具可以更好地与 docker 一起使用?

我找到了使用 运行它的解决方案。

运行设置起来只是稍微复杂一点,但不是很复杂,而且日志记录开箱即用。

基本上,您只需使用 apt-get install runit 安装 运行 它。 然后创建复制一个 运行 文件到 /etc/service/{servicename}/运行 运行 文件只是一个 bash 脚本,exec 是您的服务名称。 它的标准输出是自动捕获的。

我遇到的问题是让 nginx 记录到 stdout 和 stderr。 我遵循了将内容写入 nginx.conf 的食谱。它没有用。有效的方法很简单:

ln -sf /dev/stdout /var/log/nginx/access.log
ln -sf /dev/stderr /var/log/nginx/error.log