繁体   English   中英

Python3生产:在不使用跟踪模块的情况下记录异常

[英]Python3 production: logging exceptions without using traceback module

在我们的生产代码中,我们记录如下错误:

error = {'tos': str(sys.exc_info()[0:2])}

但它只允许查看有关错误的此类信息:

"tos": "(<class 'AttributeError'>, AttributeError(\"'NoneType' object has no attribute 'group'\",))"

这还不够 - 我希望看到包含代码的文件的行号和名称。 但是,我可以使用以下代码获取该信息:

import traceback
meta['error'] = {'tos': str(traceback.format_exc())}

但我们不会在生产中使用traceback模块,因为它被认为太重了。 那么如何在不使用traceback情况下获取行号和文件名?

sys.exc_info返回3个元素的元组,其中第三个是回溯。

返回的元组就像 - (type, value, traceback)

你正在做 - str(sys.exc_info()[0:2])只选择前两个元素。

试试 -

str(sys.exc_info())

如果无法使用traceback模块格式化回溯。 如果你只想要例外的行号和文件名,你可以使用以下 -

sys.exc_info()[2].tb_frame.f_code.co_filename #<---- filename
sys.exc_info()[2].tb_lineno # <------ line number

请注意,这些可以是内部名称,最好是使用traceback模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM