python使用装饰器作日志处理的方法


Posted in Python onJuly 11, 2019

装饰器这东西我看了一会儿才明白,在函数外面套了一层函数,感觉和java里的aop功能很像;写了2个装饰器日志的例子,

第一个是不带参数的装饰器用法示例,功能相当于给函数包了层异常处理,第二个是带参数的装饰器用法示例,将日志输出到文件。

```
#coding=utf8
import traceback
import logging
from logging.handlers import TimedRotatingFileHandler
def logger(func):
 def inner(*args, **kwargs): #1
 try:
  #print "Arguments were: %s, %s" % (args, kwargs)
  func(*args, **kwargs) #2
 except:
  #print 'error',traceback.format_exc()
  print 'error'
 return inner


def loggerInFile(filename):#带参数的装饰器需要2层装饰器实现,第一层传参数,第二层传函数,每层函数在上一层返回
 def decorator(func):
 def inner(*args, **kwargs): #1
  logFilePath = filename # 日志按日期滚动,保留5天
  logger = logging.getLogger()
  logger.setLevel(logging.INFO)
  handler = TimedRotatingFileHandler(logFilePath,
       when="d",
       interval=1,
       backupCount=5)
  formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
  handler.setFormatter(formatter)
  logger.addHandler(handler)
  try:
  #print "Arguments were: %s, %s" % (args, kwargs)
  result = func(*args, **kwargs) #2
  logger.info(result)
  except:
  logger.error(traceback.format_exc())
 return inner
 return decorator

@logger
def test():
 print 2/0

test()


@loggerInFile('newloglog')
def test2(n):
 print 100/n

test2(10)
test2(0)
print 'end'
```

以上这篇python使用装饰器作日志处理的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用PyGame模块播放声音的方法
May 20 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
对numpy中轴与维度的理解
Apr 18 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
Python自动抢红包教程详解
Jun 11 Python
Python自定义一个异常类的方法
Jun 27 Python
python经典趣味24点游戏程序设计
Jul 26 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
Aug 17 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
Python日志无延迟实时写入的示例
Jul 11 #Python
深入了解Python iter() 方法的用法
Jul 11 #Python
用python给自己做一款小说阅读器过程详解
Jul 11 #Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 #Python
ML神器:sklearn的快速使用及入门
Jul 11 #Python
python 随机森林算法及其优化详解
Jul 11 #Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 #Python
You might like
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
ASP Json Parser修正版
2009/12/06 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
Ruby元编程基础学习笔记整理
2016/07/02 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
Python八皇后问题解答过程详解
2019/07/29 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
什么是GWT的Module
2013/01/20 面试题
生产管理的三大手法
2013/11/11 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
后勤部经理岗位职责
2014/02/23 职场文书
捐助倡议书范文
2014/04/15 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
企业百日安全活动总结
2015/05/07 职场文书
财务人员入职担保书
2015/09/22 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python