引言:

最近在做UI自动化,一直傻傻分不清到底应该用error记录日志还是exception来记录,查了很多资料后,现在终于清楚了,为避免后期又遗忘,写个小文记录一下,也算总结一下下。

 

一、共同点:

1. logging模块有6个级别,由低到高为NOTSET>>DEBUG>>INFO>>WARNING>>ERROR>>CRITICAL,其实无论是error还是exception,它们的错误等级都是ERROR级别,看下面的事例:

通过终端,我们可以看到日志信息中,错误级别都是ERROR

 

二、异同点:

1. error级别的只输出错误的异常信息,而没有具体的错误堆栈信息,如果想要排查具体异常仅通过上面的异常message内容是远远不够的

2. exception级别的则不但会输出错误的异常信息,还会显示具体的错误堆栈信息,使得我们在排查问题的时候有更加明确的方向

请看下面的事例:

 

 通过终端,我们可以看到exception比error多输出了错误堆栈信息,这样我们可以更快地通过这些信息去定位错误并解决

 

三、两者关系

那么error是否可以跟exception一样也输入具体的错误堆栈信息呢?当然可以

我们只需要在error处指定一个参数的值,这个参数就是exc_info=True即可,如下:

 

 现在发现了吗?它们输出的结果是一样的,其实我们通过源码也可以看出来,它们之间的关系:

 

好啦,其实这两种都可以用,看个人喜好。