如何通过 uwsgi 强制应用程序的标准输出日志?
Posted
技术标签:
【中文标题】如何通过 uwsgi 强制应用程序的标准输出日志?【英文标题】:How to force application's stdout logs through uwsgi? 【发布时间】:2016-06-01 09:53:07 【问题描述】:我有 Django 应用程序在 Docker 容器内的 uwsgi
后面运行。 uwsgi
是通过 Dockerfile 中的 ENTRYPOINT
和 CMD
参数启动的。我成功地将它连接到分离的 nginx 容器并在浏览器中检查预期结果。
到目前为止,一切都很好。
现在我想在 Django 容器中查看应用程序日志。但我无法找到 Django 设置 LOGGING
变量和 uwsgi
开关的正确组合。我只看到uwsgi
标准日志,这对我来说没用。
有可能吗?在我看来,我必须制作一些包装 BASH 脚本,例如:
uwsgi --socket 0.0.0.0:80 --die-on-term --module myapp.wsgi:application --chdir /src --daemonize /dev/null
tail -f /common.log```
... 在 Django 中设置 LOGGING
以写入 /common.log
并将其尾部输出。
有更优雅的解决方案吗?
2016 年 2 月 24 日更新:
是的,这是可能的。我在第一次测试中的某个地方犯了错误。我在https://github.com/msgre/uwsgi_logging 上发布了工作示例。
【问题讨论】:
您尝试过哪些LOGGING
选项?
基本上StreamHandler
,到标准输出和标准错误。我用manage.py runserver
检查它,日志是可见的(在标准输出上)。当我在后面运行uwsgi
时,我只看到 uwsgi 日志... 'handlers': 'common': 'class':'logging.StreamHandler', 'stream': sys.stderr, # 和 sys.stdout “格式化程序”:“简单”,“级别”:“信息”,,,
【参考方案1】:
使用
log-master=true
在你的 uwsgi-conf.ini 中 或
--log-master
如果你把它作为参数传递
【讨论】:
是的!谢谢!你在哪里找到这个信息的?它有什么作用?我应该对我说,使用 Flask,它只有在我使用app.logger
而不是任何 logging.logger
时才有效以上是关于如何通过 uwsgi 强制应用程序的标准输出日志?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 uber-go/zap 根据日志级别记录到标准输出或标准错误?