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批量注册(python实现批量注册网站用户的示例)
- pythonai识别算法(Python3调用百度AI识别图片中的文字功能示例测试可用)
- python脚本压缩包解密(详解Python 解压缩文件)
- python3列表的使用教程(对Python3 pyc 文件的使用详解)
- python列表和条件组合的处理(一篇文章带你弄懂Python基础之列表相关操作和嵌套)
- pythonrequests怎么导入模块(Python3使用requests模块实现显示下载进度的方法详解)
- python学生管理系统设计代码(python学生管理系统开发)
- opencv 图像匹配python(OpenCV+Python识别车牌和字符分割的实现)
- 怎么查看python的安装路径(查看python安装路径及pip安装的包列表及路径)
- python的os模块操作(Python OS模块实例详解)
- python标准库操作键盘(Python中捕获键盘的方式详解)
- python查找含特定字符的字符串(Python实现查找字符串数组最长公共前缀示例)
- python柱状图第四节(python使用Plotly绘图工具绘制柱状图)
- pythonmatplotlib绘制立体图形(python3使用matplotlib绘制散点图)
- python怎么自动生成报告(python根据文章标题内容自动生成摘要的实例)
- python程序开发过程(python调用外部程序的实操步骤)
- ()
- 网友很惭愧,自己写了很多年的字,到头来还不如一名小学生写的好(自己写了很多年的字)
- 中华第一楷 张瑞龄 86岁高龄,苦练楷书71年,一幅字卖593万(中华第一楷张瑞龄)
- 冯骥才 年意(冯骥才年意)
- ()
- 百事大吉蓝底 绿底手机高清壁纸(绿底手机高清壁纸)
热门推荐
- vue验证码(vue_drf实现短信验证码)
- uni-app搜索框源代码(如何用uni-app实现顶部导航栏显示按钮和搜索框)
- python程序锁教程(在python里协程使用同步锁Lock的实例)
- sqlserver改表结构不允许(SQL Server阻止保存修改表结构的解决方法)
- mysql中基本语句(MySQL中explain语句的基本使用教程)
- 如何让API接口更安全
- mysql查询逗号分割字符串(MySQL 字符串拆分实例无分隔符的字符串截取)
- asp.net lambda表达式
- python3下urllib案例(URL Rewrite Module 2.1 URL重写模块规则写法)
- sqlserver自增字段(SQL Server中identity自增的用法详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9