Google云平台中的Gunicorn日志错误

2024-06-09 06:52:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在googlekubernetes引擎上运行Django restapi,使用Gunicorn作为WSGI服务器。当我的应用程序遇到500服务器错误时,GCP Logging console(在“GKE Container”资源中)中不会显示Python堆栈跟踪。在我的另一个使用Daphne作为ASGI/WSGI服务器的Django项目中,这个回溯被正确地记录在中。更奇怪的是,就在几周前,Gunicorn应用程序已经正确地记录了错误。这些错误也会出现在Error Reporting console中。在

明确地说,这是我希望在GCP日志中看到的信息类型:

Internal Server Error: /v1/user/errant-endpoint
Traceback (most recent call last):
  File "/path/to/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)

  ...

  File "/path/to/project/file.py", line 176, in my_file
    print(test)
NameError: name 'test' is not defined

对于Gunicorn项目,一些Python回溯会被记录下来,比如在Gunicorn启动时:

^{pr2}$

但是,如果出现500个错误,则只记录HTTP信息:

[04/Feb/2019:06:03:58 +0000] "POST /v1/errant-endpoint HTTP/1.1" 500

我已经查找了有关设置Stackdriver LoggingStackdriver Error Reporting的资源,但这两种方法似乎都不适用,因为1)只有当您希望显式地记录错误时(如client.report_exception())才起作用;2)错误报告在没有我的设置的情况下捕获了以前的错误,因此似乎不必安装这些客户端库就可以了。在

这里有太多变数,我不知道从哪里开始。我可能没有在这里提供足够的信息来正确诊断(docker设置、kubernetes配置等),但我认为我可能误解了关于这个过程的一些基本的东西,而且有人可能会很好地启发我。在

编辑:

我在GKE documentation中找到了如何确保为我的集群启用Stackdriver日志记录。还是不走运。在

更新(部分解决方案):

我在settings.py中设置DEBUG = True,这会提示错误开始记录在Stackdriver日志和错误报告中。我已经为我的金丝雀环境做了这件事,但这并不理想,因为它暴露了我的一些后端代码。仍然不确定为什么我的另一个GCP项目没有在调试模式下运行。在


Tags: 项目djangopy服务器信息应用程序wsgilogging