python异常信息处理(Python使用修饰器进行异常日志记录操作示例)
python异常信息处理
Python使用修饰器进行异常日志记录操作示例本文实例讲述了Python使用修饰器进行异常日志记录操作。分享给大家供大家参考,具体如下:
当脚本中需要进行的的相同的异常操作很多的时候,可以用修饰器来简化代码。比如我需要记录抛出的异常:
在log_exception.py文件中,
|
import functools import logging def create_logger(): logger = logging.getLogger( "test_log" ) logger.setLevel(logging.INFO) fh = logging.FileHandler( "test.log" ) fmt = "[%(asctime)s-%(name)s-%(levelname)s]: %(message)s" formatter = logging.Formatter(fmt) fh.setFormatter(formatter) logger.addHandler(fh) return logger def log_exception(fn): @functools .wraps(fn) def wrapper( * args, * * kwargs): logger = create_logger() try : fn( * args, * * kwargs) except Exception as e: logger.exception( "[Error in {}] msg: {}" . format (__name__, str (e))) raise return wrapper |
在test.py文件中:
|
from log_exception import log_exception @log_exception def reciprocal(x): return 1 / x if __name__ = = "__main__" : reciprocal( 0 ) |
在test.log文件中可以看到以下错误信息:
[2017-11-26 23:37:41,012-test_log-ERROR]: [Error in __main__] msg: integer liision or modulo by zero
Traceback (most recent call last):
File "<ipython-input-43-cfa2d18586a3>", line 16, in wrapper
fn(*args, **kwargs)
File "<ipython-input-46-37aa8ff0ba48>", line 3, in reciprocal
return 1/x
ZeroliisionError: integer liision or modulo by zero
参考:
1. https://wiki.python.org/moin/PythonDecorators
2. https://www.blog.pythonlibrary.org/2016/06/09/python-how-to-create-an-exception-logging-decorator/
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://www.cnblogs.com/arkenstone/p/7901065.html
- python读取txt文件每一行数据(python读取txt文件并取其某一列数据的示例)
- python的def命令参数(python ddt数据驱动最简实例代码)
- python编辑redis(python使用pipeline批量读写redis的方法)
- python操作json格式(详解python 3.6 安装json 模块simplejson)
- python企业微信录信息(python获取微信企业号打卡数据并生成windows计划任务)
- python去除字符串中间的空格(Python去除字符串前后空格的几种方法)
- ubuntu python3.7安装(详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本)
- python怎么在csv修改数据(python 编写输出到csv的操作)
- python读取mat文件(详解Python Matplot中文显示完美解决方案)
- python 自定义获取文件目录(Python使用os.listdir和os.walk获取文件路径与文件下所有目录的方法)
- python读取数据集的图片(浅析Python 读取图像文件的性能对比)
- 用python简单实现登录功能(使用python的pexpect模块,实现远程免密登录的示例)
- python数据表教程(详解Python sys.argv使用方法)
- python将网站图片本地存储(详解Python下载图片并保存本地的两种方式)
- 如何用python画函数图(使用python绘制二元函数图像的实例)
- python ip代理池(Python 实现域名解析为ip的方法)
- 职场人改不掉这4个习惯,只会越混越穷,一辈子也翻不了身(职场人改不掉这4个习惯)
- 华为 联想等46家公司笔试面试题,涉及各行各业,建议收藏(联想等46家公司笔试面试题)
- ()
- ()
- 800壮士拼死拖住30万日军 八佰 的真实历史,誓与阵地共存亡(800壮士拼死拖住30万日军)
- 演员陈创,火于 哮天犬 ,颠峰于 福贵 ,现状却令人唏嘘(演员陈创火于哮天犬)
热门推荐
- html5隐藏数字(HTML5去掉输入框type为number时的上下箭头的实现方法)
- css语言代码大全(分享20条编写 CSS 代码的建议)
- dedecms频道封面不能修改内容(dedecms按栏目名首字母/数字排序输出的实现方法)
- css样式退出效果(纯css实现选中切换效果的示例)
- python3和python2 兼容(Python2和Python3的共存和切换使用)
- select 1 from 的作用
- html5加入图片(HTML5 图片预加载的示例代码)
- vuex存取修改数据流程(vuex数据持久化的两种实现方案)
- laravel怎么设置返回指定列(在laravel5.2中实现点击用户头像更改头像的方法)
- 数据恢复操作类型包括误写入恢复(delete误删数据使用SCN号恢复推荐)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9