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
我正在通过 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