Supervisord不会显示来自进程的stdout

试图捕获我的应用程序的日志与监pipe人在docker。

这是我的supervisord.conf:

[supervisord] logfile=/dev/null nodaemon=true [program:autofs] command=automount -f redirect_stderr=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 [program:split-pdf] command=bin/split-pdf-server directory=/root/split-pdf redirect_stderr=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 

启动容器后,一切正常,我可以看到我的应用程序运行的结果(它在networking共享上创buildPDF文件)

但日志显示从我的应用程序没有输出:

 015-07-02 00:39:26,119 CRIT Supervisor running as root (no user in config file) 2015-07-02 00:39:26,124 INFO supervisord started with pid 5 2015-07-02 00:39:27,127 INFO spawned: 'split-pdf' with pid 8 2015-07-02 00:39:27,130 INFO spawned: 'autofs' with pid 9 2015-07-02 00:39:28,132 INFO success: split-pdf entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2015-07-02 00:39:28,132 INFO success: autofs entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 

这是我附加到docker集装箱时唯一的输出。

我在Ubuntu 15.04docker1.7.0

这不是这个问题的重复,因为我在一个容器中运行多个进程。

事实certificate一切正常,但有一些延迟。 当我试图创build一个其他应用程序,产生更多的日志消息的容器,消息开始出现在日志文件,但延迟。

我testing的第一个应用程序在日志中每个任务只有两行,我想在开始刷新日志文件之前需要填充某种缓冲区。

这与pipe道缓冲有关。

我能够以非缓冲模式运行python来绕过这个问题:

 $ docker run -e PYTHONUNBUFFERED=1 imagename 

有关此问题的讨论,请参阅supervisor-stdout问题#10 。