Python 2.7 Sentry未在带有logger.exception()的web UI中显示异常
在我们的flask应用程序中,Sentry在web UI中为未捕获的异常显示堆栈跟踪异常,如下所示:Python 2.7 Sentry未在带有logger.exception()的web UI中显示异常,python-2.7,sentry,Python 2.7,Sentry,在我们的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.captureEx
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)”吗
“sentry.interfaces.Exception”
甚至不是JSON正文的一部分,但它仍然发送要记录的消息
其他信息(2017年10月27日):
文件结构设置:
flask_app/
|--app
|--utils
在日志配置dict中,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将显示来自utils记录器的异常消息和堆栈跟踪,但应用记录器将只记录错误消息(
OH GREAT
)。默认情况下,Python日志记录不会捕获堆栈跟踪
Per:
第二个可选关键字参数是stack_info,默认为False
。如果为true,堆栈信息将添加到日志消息中,包括实际的日志调用
请尝试:
logger.exception('OH NOS occurrented:',stack_info=True)
是否需要“手动”调用
raven.client.captureException()
?这取决于您如何配置它,但如果您使用了Flask()的推荐实现,则否:
配置Sentry应用程序后,它将自动捕获Flask中未捕获的异常
嗯,stack_info在debug中似乎只是一个kwarg(我还应该指定这是python2.7,所以它在debug中甚至不是一个有效的kwarg)version@Erik使用
logging.exception(“遇到异常”,traceback.format_exc())
将为您提供更有用的堆栈跟踪(可能)@JacobBudinstack\u info
在使用logging.Logger.exception()
时已经是True
。OP没有使用您描述的debug()
。>(对于Python 3也是如此)