Google uwsgi 容器中的 StackDrive 日志记录级别始终处于错误级别

Google StackDrive Logging Level in containers with uwsgi always at Error Level

我正在通过 Kuberenetes 部署 Google 云上的容器,它们是 django 项目和 uwsgi 运行 它们。

我正在使用 stackdrive 日志记录工具查看日志记录,问题是所有条目都被视为严重 ERROR 即使它们不是错误。 uwsgi的日志好像是写到stderr之类的。

在图片中你可以看到 django 使用 INFO 级别,但被 stackdrive 接收为 ERROR

这就是我设置 uwsgi 的方式。

[uwsgi] master = true socket = :3031 chdir = . wsgi-file = docker.wsgi processes = 4 threads = 2 socket-timeout = 90 harakiri = 90 http = :8000 env = prometheus_multiproc_dir=multi enable-threads = yes lazy-apps = yes pidfile=/tmp/project-master.pid

写入 stderr 的 Kubernetes 日志总是被标记为错误——这是在 Stackdriver 日志记录代理中硬编码的。同样,写入 stdout 的日志始终标记为 INFO。

如果您可以将应用程序配置为将非错误日志消息写入 stdout,请这样做。另一种可能的方法是将日志写入文件,运行 该文件上的“tail -f”命令作为同一 pod 中的边车容器,并在边车下的 Stackdriver 日志查看器中查找您的日志容器代替。最后,您可以考虑将日志直接写入 Stackdriver Logging API,这样您就可以完全控制每个条目的内容。

This 回答帮助我找到了解决方案。使用选项 logger-req=stdio uWSGI 日志在 Stackdriver 中获得正确的级别。

uwsgi.ini的例子:

[uwsgi]
logger-req=stdio