Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Sentry未在带有logger.exception()的web UI中显示异常_Python 2.7_Sentry - Fatal编程技术网

Python 2.7 Sentry未在带有logger.exception()的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

在我们的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正文的一部分,但它仍然发送要记录的消息

其他信息(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())
将为您提供更有用的堆栈跟踪(可能)@JacobBudin
stack\u info
在使用
logging.Logger.exception()
时已经是
True
。OP没有使用您描述的
debug()
。>(对于Python 3也是如此)