【问题标题】:How to force application's stdout logs through uwsgi?如何通过 uwsgi 强制应用程序的标准输出日志?
【发布时间】:2016-06-01 09:53:07
【问题描述】:

我有 Django 应用程序在 Docker 容器内的 uwsgi 后面运行。 uwsgi 是通过 Dockerfile 中的 ENTRYPOINTCMD 参数启动的。我成功地将它连接到分离的 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 “格式化程序”:“简单”,“级别”:“信息”,},},

标签: django logging nginx docker uwsgi


【解决方案1】:

使用

log-master=true

在你的 uwsgi-conf.ini 中 或

--log-master

如果你把它作为参数传递

【讨论】:

  • 是的!谢谢!你在哪里找到这个信息的?它有什么作用?我应该对我说,使用 Flask,它只有在我使用 app.logger 而不是任何 logging.logger 时才有效
猜你喜欢
  • 2023-02-02
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
相关资源
最近更新 更多