当脚本中需要进行的的相同的异常操作很多的时候,可以用修饰器来简化代码。比如我需要记录抛出的异常:

在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中用修饰器进行异常日志记录相关推荐

  1. python with关键字_python中用with关键字来实现上下文管理器.

    例子 with open(r'somefileName') as somefile: for line in somefile: print line with 语句的语法 with [as ]: 什 ...

  2. python 函数装饰器_python函数装饰器的用法

    函数装饰器: 开闭原则:在面向对象编程领域中,开闭原则规定"软件中的对象(类,模块,函数等等)应该对于扩展是开放的, 但是对于修改是封闭的",这意味着一个实体是允许在不改变它的源代 ...

  3. python log函数_python要点-装饰器

    大家有没有碰到过这种需求,扩展公司的历史项目,对功能进行扩展?拿到历史项目看源码的时候是不是头特别大,难上加难的是还要对其进行修改!!!今天要讲的是python中的重要功能-装饰器,其对满足前述的实现 ...

  4. python @修饰符_python函数修饰符@的使用方法解析

    python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个 ...

  5. python装饰器_Python基础-装饰器

    作者:Zarten知乎专栏:Python基础深入详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 ! 概述 装饰器其实就 ...

  6. python函数修饰器_Python函数装饰器指南

    Python 具有强大的功能和富有表现力的语法.我最喜欢的装饰之一.在设计模式的上下文中,装饰器动态更改方法或类功能,而不必直接使用子类.当您需要扩展功能,但不想修改原函数时,这是理想的选择.我们可以 ...

  7. python 多态 锁_python 上下文管理器,多态,数据锁定与自省,

    python 上下文管理器,多态,数据锁定与自省, 前文课题 通过装饰器来实现单例模式 通过类实现一个通用装饰器,皆可以装饰函数也可装饰类,即可有参也可无参 描述 new str repr call ...

  8. python3层装饰器_python三层装饰器python字符串,数值计算

    Python是一种面向对象的语言,但它不像C++一样把标准类都封装到库中,而是进行了进一步的封装,语言本身就集成一些类和函数,比如print,list,dict etc. 给编程带来很大的便捷 Pyt ...

  9. python基础装饰器_Python基础 装饰器及练习

    Python视频教程讲解装饰器 推荐免费:Python视频教程 装饰器概念 装饰器,说白了,就是用来装饰函数的一个函数. 装饰器遵循 开放封闭原则.依赖倒置原则,这两个原则概念,自行百度下, 装饰器长 ...

最新文章

  1. 2022-2028年中国鸡血石产业市场研究及前瞻分析报告
  2. android笔记1——开发环境的搭建
  3. Python进阶1——一摞纸牌
  4. 【JEECG技术文档】JEECG高级查询构造器使用说明
  5. 解除分配UNASSIGN
  6. leetcode1027
  7. ICPC 2019-2020 North-Western Russia Regional Contest 补题部分
  8. C#关于base64图片字符串的压缩方法
  9. C++字符串(string/to_string/append/substr/length/find/rfind/replace/stoi转数字转int)
  10. zedboard linux内核下载,zedboard学习-为Linux内核打补丁
  11. Redis中的lru算法实现
  12. java跨平台_Java如何实现跨平台
  13. 精品|从零开始-基于FPGA 的软核处理器设计实现
  14. c语言中怎么避免整数除法,大整数除法
  15. 【调剂】长江大学张菲菲教授招收硕士生
  16. 真北敏捷 | 明治维新与敏捷:思想、制度和器物
  17. 血仍未冷——写在37岁生日
  18. 基于Robopeak触摸屏和官方摄像头的树莓派照相机
  19. loadrunner11 录制手机
  20. 第五章 欧洲科技文明的起源

热门文章

  1. JS基础入门篇(四十三)—ES6(二)
  2. JWT实现token-based会话管理
  3. html5 app开发重大消息-腾讯在技术端推进Html5生态发展
  4. Visual Studio 2015上安装Entity Framework Power Tools
  5. 【参数】REMOTE_LOGIN_PASSWORDFILE参数三种取值及其行为特性分析
  6. 【案例】爆老师拆解同步网络seo分析思路
  7. js 操作 select option
  8. 为什么要将对象序列化
  9. app_offline.htm 是确有其事
  10. qq聊天界面 java程序 51cto_Java QQ项目详细设计之:组操作模块