捕获全局异常,并且把异常信息打印到日志中

背景:工作中用到一些脚本,脚本把日志记录到文件中。新需求修改脚本后,难免引入一些异常,执行脚本会报错,但是日志文件中没有报错的详细信息,很难排查。

1、不使用sys.excepthook时,执行下面代码会抛出异常,日志文件example.log不会记录异常信息。

 

复制代码
#coding:utf-8
import sys
import logging
logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG)
def handle_exception(exc_type, exc_value, exc_traceback):
    """使用sys.excepthook捕获全局异常,并且把异常信息打印到日志中"""
    if issubclass(exc_type, KeyboardInterrupt):
        sys.__excepthook__(exc_type, exc_value, exc_traceback)
        return
    logging.error("未捕获的异常:", exc_info=(exc_type, exc_value, exc_traceback))
#sys.excepthook = handle_exception # 全局捕获异常


a=3/0
复制代码

 

2、使用sys.excepthook后,无论脚本哪一行代码抛出异常,日志文件example.log都会记录异常信息。

复制代码
#coding:utf-8
import sys
import logging
logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG)
def handle_exception(exc_type, exc_value, exc_traceback):
    """使用sys.excepthook捕获全局异常,并且把异常信息打印到日志中"""
    if issubclass(exc_type, KeyboardInterrupt):
        sys.__excepthook__(exc_type, exc_value, exc_traceback)
        return
    logging.error("未捕获的异常:", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_exception # 全局捕获异常


a=3/0
复制代码

 

posted @   超级宝宝11  阅读(114)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
历史上的今天:
2017-02-27 appium 移动web样例脚本
点击右上角即可分享
微信分享提示