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 division or modulo by zero
Traceback (most recent call last):
File "", line 16, in wrapper
fn(*args, **kwargs)
File "", line 3, in reciprocal
return 1/x
ZeroDivisionError: integer division or modulo by zero
参考:
python 修饰器_python中用修饰器进行异常日志记录相关推荐
- python with关键字_python中用with关键字来实现上下文管理器.
例子 with open(r'somefileName') as somefile: for line in somefile: print line with 语句的语法 with [as ]: 什 ...
- python 函数装饰器_python函数装饰器的用法
函数装饰器: 开闭原则:在面向对象编程领域中,开闭原则规定"软件中的对象(类,模块,函数等等)应该对于扩展是开放的, 但是对于修改是封闭的",这意味着一个实体是允许在不改变它的源代 ...
- python log函数_python要点-装饰器
大家有没有碰到过这种需求,扩展公司的历史项目,对功能进行扩展?拿到历史项目看源码的时候是不是头特别大,难上加难的是还要对其进行修改!!!今天要讲的是python中的重要功能-装饰器,其对满足前述的实现 ...
- python @修饰符_python函数修饰符@的使用方法解析
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个 ...
- python装饰器_Python基础-装饰器
作者:Zarten知乎专栏:Python基础深入详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 ! 概述 装饰器其实就 ...
- python函数修饰器_Python函数装饰器指南
Python 具有强大的功能和富有表现力的语法.我最喜欢的装饰之一.在设计模式的上下文中,装饰器动态更改方法或类功能,而不必直接使用子类.当您需要扩展功能,但不想修改原函数时,这是理想的选择.我们可以 ...
- python 多态 锁_python 上下文管理器,多态,数据锁定与自省,
python 上下文管理器,多态,数据锁定与自省, 前文课题 通过装饰器来实现单例模式 通过类实现一个通用装饰器,皆可以装饰函数也可装饰类,即可有参也可无参 描述 new str repr call ...
- python3层装饰器_python三层装饰器python字符串,数值计算
Python是一种面向对象的语言,但它不像C++一样把标准类都封装到库中,而是进行了进一步的封装,语言本身就集成一些类和函数,比如print,list,dict etc. 给编程带来很大的便捷 Pyt ...
- python基础装饰器_Python基础 装饰器及练习
Python视频教程讲解装饰器 推荐免费:Python视频教程 装饰器概念 装饰器,说白了,就是用来装饰函数的一个函数. 装饰器遵循 开放封闭原则.依赖倒置原则,这两个原则概念,自行百度下, 装饰器长 ...
最新文章
- 2022-2028年中国鸡血石产业市场研究及前瞻分析报告
- android笔记1——开发环境的搭建
- Python进阶1——一摞纸牌
- 【JEECG技术文档】JEECG高级查询构造器使用说明
- 解除分配UNASSIGN
- leetcode1027
- ICPC 2019-2020 North-Western Russia Regional Contest 补题部分
- C#关于base64图片字符串的压缩方法
- C++字符串(string/to_string/append/substr/length/find/rfind/replace/stoi转数字转int)
- zedboard linux内核下载,zedboard学习-为Linux内核打补丁
- Redis中的lru算法实现
- java跨平台_Java如何实现跨平台
- 精品|从零开始-基于FPGA 的软核处理器设计实现
- c语言中怎么避免整数除法,大整数除法
- 【调剂】长江大学张菲菲教授招收硕士生
- 真北敏捷 | 明治维新与敏捷:思想、制度和器物
- 血仍未冷——写在37岁生日
- 基于Robopeak触摸屏和官方摄像头的树莓派照相机
- loadrunner11 录制手机
- 第五章 欧洲科技文明的起源
热门文章
- JS基础入门篇(四十三)—ES6(二)
- JWT实现token-based会话管理
- html5 app开发重大消息-腾讯在技术端推进Html5生态发展
- Visual Studio 2015上安装Entity Framework Power Tools
- 【参数】REMOTE_LOGIN_PASSWORDFILE参数三种取值及其行为特性分析
- 【案例】爆老师拆解同步网络seo分析思路
- js 操作 select option
- 为什么要将对象序列化
- app_offline.htm 是确有其事
- qq聊天界面 java程序 51cto_Java QQ项目详细设计之:组操作模块