如何记录Python异常?
如何在 Python 中记录异常?
我查看了一些选项,发现我可以使用以下代码访问实际的异常详细信息:
import sys
import traceback
try:
1/0
except:
exc_type, exc_value, exc_traceback = sys.exc_info()
traceback.print_exception(exc_type, exc_value, exc_traceback)
我想以某种方式将字符串 print_exception()
抛出到标准输出,以便我可以记录它。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
看一下
logging.exception
(Python 日志模块)这应该自动处理获取当前异常的回溯并正确记录它。
Take a look at
logging.exception
(Python Logging Module)This should automatically take care of getting the traceback for the current exception and logging it properly.
在 Python 3.5 中,您可以在 exc_info 参数中传递异常实例:
In Python 3.5 you can pass exception instance in exc_info argument:
要回答您的问题,您可以使用 print_exception() 的字符串版本="noreferrer">
traceback.format_exception()
函数。它将回溯消息作为字符串列表返回,而不是将其打印到标准输出,因此您可以用它做您想做的事情。例如:这显示:
但是,我绝对建议使用标准 Python 日志记录模块,如 rlotun 所建议的。这不是最容易设置的事情,但它是非常可定制的。
To answer your question, you can get the string version of
print_exception()
using thetraceback.format_exception()
function. It returns the traceback message as a list of strings rather than printing it to stdout, so you can do what you want with it. For example:This displays:
However, I'd definitely recommend using the standard Python logging module, as suggested by rlotun. It's not the easiest thing to set up, but it's very customizable.
记录异常就像将 exc_info=True 关键字参数添加到任何日志消息中一样简单,请参阅 http://docs.python.org/2/library/logging.html。
示例:
输出(当然,取决于您的日志处理程序配置):
Logging exceptions is as simple as adding the exc_info=True keyword argument to any log message, see entry for Logger.debug in http://docs.python.org/2/library/logging.html.
Example:
output (depending, of course, on your log handler config):
首先,考虑在 except 子句中使用正确的异常类型。
然后,命名异常,您可以打印它:
根据您的 Python 版本,您必须使用
First of all, consider using a proper Exception type on your except clause.
Then, naming the exception, you can print it:
Dependending on your Python version, you must use