Python使用修饰器进行异常日志记录操作示例


Posted in Python onMarch 19, 2019

本文实例讲述了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 "<ipython-input-43-cfa2d18586a3>", line 16, in wrapper
    fn(*args, **kwargs)
  File "<ipython-input-46-37aa8ff0ba48>", line 3, in reciprocal
    return 1/x
ZeroDivisionError: integer division 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程序设计有所帮助。

Python 相关文章推荐
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
python实现带错误处理功能的远程文件读取方法
Apr 29 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
python中logging库的使用总结
Oct 18 Python
python实现list由于numpy array的转换
Apr 04 Python
python实现n个数中选出m个数的方法
Nov 13 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
python交易记录整合交易类详解
Jul 03 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
python学生管理系统学习笔记
Mar 19 #Python
Python操作rabbitMQ的示例代码
Mar 19 #Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 #Python
浅谈python中get pass用法
Mar 19 #Python
使用matplotlib中scatter方法画散点图
Mar 19 #Python
详解django+django-celery+celery的整合实战
Mar 19 #Python
详解Python正则表达式re模块
Mar 19 #Python
You might like
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
JS backgroundImage控制
2009/05/19 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python 模拟登陆的两种实现方法
2017/08/10 Python
python3安装speech语音模块的方法
2018/12/24 Python
python字典的常用方法总结
2019/07/31 Python
简单了解python中的与或非运算
2019/09/18 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
事业单位公务员的职业生涯规划
2014/01/15 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
美术指导助理求职信
2014/04/20 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
介绍信的写法
2015/01/31 职场文书
读书笔记怎么写
2015/07/01 职场文书
德能勤绩工作总结
2015/08/11 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android