
在进行异常处理的时候,通常我们会直接将异常进行字符串格式化,但其实可以直接指定一个参数将 traceback 打印出来,示例如下:
import logginglogging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')try:result = 5 / 0except Exception as e:# badlogging.error('Error: %s', e)# goodlogging.error('Error', exc_info=True)# goodlogging.exception('Error')
如果我们直接使用字符串格式化的方法将错误输出的话,是不会包含 Traceback 信息的,但如果我们加上 exc_info 参数或者直接使用 exception() 方法打印的话,那就会输出 Traceback 信息了
运行结果如下:
2018-06-03 22:24:31,927 - root - ERROR - Error: division by zero2018-06-03 22:24:31,927 - root - ERROR - ErrorTraceback (most recent call last):File "/private/var/books/aicodes/loggingtest/demo9.py", line 6, in <module>result = 5 / 0ZeroDivisionError: division by zero2018-06-03 22:24:31,928 - root - ERROR - ErrorTraceback (most recent call last):File "/private/var/books/aicodes/loggingtest/demo9.py", line 6, in <module>result = 5 / 0ZeroDivisionError: division by zero
bad
logging.error(‘Error: %s’, e) # 等同 logging.error(‘Error: %s’, e.message
good
logging.error(‘Error’, exc_info=True)
good
logging.exception(‘Error’)
