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 实现一个颜色色值转换的小工具
Dec 06 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
详解python3中的真值测试
Aug 13 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
浅谈python脚本设置运行参数的方法
Dec 03 Python
python实现一个简单的ping工具方法
Jan 31 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
Jun 15 Python
Python 如何定义匿名或内联函数
Aug 01 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 Python
Python Matplotlib绘制动画的代码详解
May 30 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
详解python with 上下文管理器
2020/09/02 Python
Python os库常用操作代码汇总
2020/11/03 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
本溪关门山导游词
2015/02/09 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
《鲸》教学反思
2016/02/23 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
Python编写冷笑话生成器
2022/04/20 Python