推荐书: Python开发最佳实践

python中logging模块的error和exception的区别和最佳实践

分享时@该用户已经被封, 我就能回答你的问题奥!

在python中, logging模块是用于处理日志信息的, 几乎在所有项目中都会用到这个模块。
而logging.error和logging.exception这两个方法很相似, 用起来也容易混淆。

其实这两个方法只有一个区别, loging.error只是记录一个日志消息, 日志等级是error, 而exception在记录消息的同时, 默认会记录错误发生的traceback信息, 所以说, 如果你想记录更详细的错误信息, 你最好是使用exception, 但是error方法也可以输出traceback信息, 只需要你设置一个参数exc_info, 下面我们使用例子来看看具体的区别:

先引入logging模块:

1
2
3
import logging

log = logging.getLogger(__name__)

使用error记录错误日志

你只能看到一个简单的信息:

1
2
3
4
try:
raise ValueError('A error happend !')
except ValueError as e:
log.error("值错误")
输出(stream):
值错误

我们使用exc_info参数: 这样就能看到traceback信息:

1
2
3
4
try:
raise ValueError('A error happend !')
except ValueError as e:
log.error("值错误", exc_info=True)
输出(stream):
值错误 Traceback (most recent call last): File "", line 2, in raise ValueError('A error happend !') ValueError: A error happend !

使用exception

exception默认就会输出traceback信息:

1
2
3
4
try:
raise ValueError('A error happend !')
except ValueError as e:
log.exception('值错误')
输出(stream):
值错误 Traceback (most recent call last): File "", line 2, in raise ValueError('A error happend !') ValueError: A error happend !

注意
本文由jupyter notebook转换而来, 您可以在这里下载notebook
有问题可以直接在下方留言
或者给我发邮件675495787[at]qq.com
请记住我的网址: mlln.cn 或者 jupyter.cn