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的Tornado框架中的日志的方法
May 02 Python
详解python:time模块用法
Mar 25 Python
解决yum对python依赖版本问题
Jul 05 Python
python内存管理机制原理详解
Aug 12 Python
python hashlib加密实现代码
Oct 17 Python
python的faker库用法
Nov 28 Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
Pyhton模块和包相关知识总结
May 12 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 取得瑞年与平年的天数的代码
2009/08/10 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
python format 格式化输出方法
2018/07/16 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
python中怎么表示空值
2020/06/19 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
大专自我鉴定范文
2013/10/23 职场文书
护理专科自荐书范文
2014/02/18 职场文书
商铺租赁意向书
2014/04/01 职场文书
初中新生军训方案
2014/05/13 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
群众路线表态发言材料
2014/10/17 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书