jvc*_*c26 20 python django logging supervisord docker
所以,通过uWSGI试验Docker + Supervisord + Django应用程序.我整个堆栈工作正常,但需要整理日志记录.
如果我以非守护进程模式启动主管,
/usr/bin/supervisord -n
Run Code Online (Sandbox Code Playgroud)
然后我将主管的日志记录输出播放到docker logs stdout中.但是,如果supervisord处于守护进程模式,它自己的日志会被隐藏在容器文件系统中,并且其应用程序的日志也会在自己的app__stderr/stdout文件中执行.
我想要的是将supervisor和application stdout记录到docker日志中.
在非守护进程模式下启动监督是一个明智的想法,还是会导致意想不到的后果?另外,如何将应用程序日志也播放到docker日志中?
Dre*_*rew 38
我完成了这个.
在Docker镜像中安装supervisor-stdout:
RUN apt-get install -y python-pip && pip install supervisor-stdout
Run Code Online (Sandbox Code Playgroud)
编辑你的supervisord.conf
外观:
[program:myprogram]
command=/what/ever/command
stdout_events_enabled=true
stderr_events_enabled=true
[eventlistener:stdout]
command = supervisor_stdout
buffer_size = 100
events = PROCESS_LOG
result_handler = supervisor_stdout:event_handler
Run Code Online (Sandbox Code Playgroud)
Tho*_*aux 19
Docker容器就像一个面巾纸,你使用它然后你放弃它.为了"活着",Docker需要在前台运行的东西(而守护进程在后台运行),这就是你使用Supervisord的原因.
因此,您需要将过程输出(访问和错误)"重定向/添加/合并"到运行容器时看到的Supervisord输出.
正如Drew所说,每个人都使用https://github.com/coderanger/supervisor-stdout来实现它(对我而言,这应该被添加到supervisord项目中!).德鲁忘了说,你可能需要添加
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
Run Code Online (Sandbox Code Playgroud)
到supervisord程序配置块.
还有一些非常有用的东西,想象你的进程是登录日志文件而不是stdout,你可以请求supervisord观看它:
[program:php-fpm-log]
command=tail -f /var/log/php5-fpm.log
stdout_events_enabled=true
stderr_events_enabled=true
Run Code Online (Sandbox Code Playgroud)
这将通过supervisord-stdout将php5-fpm.log内容重定向到stdout然后重定向到supervisord stdout.
rul*_*web 12
supervisor-stdout需要安装python-pip,下载~150mb,我觉得这个容器只需要安装另一个工具.
将日志文件重定向到/ dev/stdout对我有用:
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
Run Code Online (Sandbox Code Playgroud)
http://veithen.github.io/2015/01/08/supervisord-redirecting-stdout.html
归档时间: |
|
查看次数: |
16645 次 |
最近记录: |