我正在使用监督者,nginx,nodejs api和sidekiq运行3个进程,总之有标记标签的日志,以便以后我只能过滤来自nodejs api或sidekiq等的日志吗?
编辑
我希望所有日志都进入stdout,因为我正在docker容器中运行它
谢谢
supervisor-stdout
插件将以子进程名称为前缀将子进程日志消息打印到stdout。
您还可以通过在supervisord.conf
设置loglevel = debug
来将子进程日志消息打印到stdout,但这也会打印很多其他调试信息。
@mnaberez不幸的是, supervisor-stdout
不能与通过apt-get在Ubuntu 16.04上安装的超级用户一起使用。 它将引发错误Error: supervisor_stdout:event_handler cannot be resolved within [eventlistener:stdout]
。
替代方法(通过pip安装)更加麻烦。 我可以用以下方式运行它:
/path/to/supervisord -c /path/to/supervisord.conf
正常运行:
stdout RUNNING pid 1294, uptime 0:03:16
tornado-8000 RUNNING pid 1295, uptime 0:03:16
tornado-8001 RUNNING pid 1296, uptime 0:03:16
但它没有子进程名称的前缀。 如果我用
[supervisord]
nodaemon = true
在我的配置文件中,我得到的前缀显示在输出中,但未写在日志文件中。
我使用的是一个相当标准的设置(两个龙卷风进程和supervisor_stdout),其设置为:
[program:tornado-8000]
command = /path/to/python myfile.py
stdout_events_enabled = true
stderr_events_enabled = true
...
[eventlistener:stdout]
command = /path/to/supervisor_stdout
buffer_size = 100
events = PROCESS_LOG
result_handler = supervisor_stdout:event_handler
是否有关于此问题或替代解决方案的更新?
想知道与@ katsar0v相同。 还有其他解决方案吗?
也在寻找解决方案。
最有用的评论
想知道与@ katsar0v相同。 还有其他解决方案吗?