Supervisor: 标记来自不同进程的日志

创建于 2016-04-13  ·  5评论  ·  资料来源: Supervisor/supervisor

我正在使用监督者,nginx,nodejs api和sidekiq运行3个进程,总之有标记标签的日志,以便以后我只能过滤来自nodejs api或sidekiq等的日志吗?

编辑

我希望所有日志都进入stdout,因为我正在docker容器中运行它

谢谢

logging question

最有用的评论

想知道与@ katsar0v相同。 还有其他解决方案吗?

所有5条评论

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相同。 还有其他解决方案吗?

也在寻找解决方案。

此页面是否有帮助?
0 / 5 - 0 等级