gpt4 book ai didi

python-2.7 - 使用 logger.exception() 的 Web UI 中的 Sentry 未显示异常

转载 作者:行者123 更新时间:2023-12-05 05:19:04 25 4
gpt4 key购买 nike

在我们的 flask 应用程序中,Sentry 在 Web UI 中显示带有堆栈跟踪的异常,用于未捕获的异常,如下所示:

a = 1/0

但是在使用记录器捕获异常时:

try:
1/0
except Exception as e:
logger.exception('OH NOS occured: ')

Sentry UI 只显示记录的消息,没有堆栈跟踪。

关于 Sentry 最佳实践(也在 python 中):

  • 捕获的异常是否需要在信息/警告/错误日志下方使用 raven.client.captureException()
  • 应该改用 `logger.error('msg', exc_info=True) 吗?

查看正在发送的 JSON “sentry.interfaces.Exception” 甚至不是 JSON 正文的一部分,但它仍然发送要记录的消息。

附加信息 (10/27/17):

文件结构设置:

flask_app/
|--app
|--utils

在日志记录配置字典中,应用程序和实用程序记录器都包含一个定义为 Sentry 的处理程序。现在这里变得有趣了。在文件 utils.crasher 中我有:

import logging

logger = getLogger(__name__)

def crash_boy():
try:
1 + '123'
except Exception as e:
logger.exception('Oh gosh we messed up big time here')
raise e

在 app.main 中

@bp.route('/crash')
def crash():
try:
return crash_boy()
except Exception as e:
logger.exception('OH GREAT')
return 'WE HAD A CRASH BOIZ'

Sentry 将显示来自实用程序记录器的异常消息和堆栈跟踪,但应用程序记录器将仅记录错误消息 (OH GREAT)。

最佳答案

默认情况下,Python 日志记录不会捕获堆栈跟踪。

根据 the logging documentation :

The second optional keyword argument is stack_info, which defaults to False. If true, stack information is added to the logging message, including the actual logging call.

改为尝试:

logger.exception('OH NOS occured: ', stack_info=True)

您是否需要“手动”调用 raven.client.captureException()?这取决于您如何配置它,但如果您使用了推荐的 Flask 实现 ( as documented here ),则不会:

Once you’ve configured the Sentry application it will automatically capture uncaught exceptions within Flask.

关于python-2.7 - 使用 logger.exception() 的 Web UI 中的 Sentry 未显示异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46840063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com