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高并发异步服务器核心库forkcore使用方法
Nov 26 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
python多线程方式执行多个bat代码
Jun 07 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
对python函数签名的方法详解
Jan 22 Python
Python中字符串List按照长度排序
Jul 01 Python
Python实现动态循环输出文字功能
May 07 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
Pytorch上下采样函数--interpolate用法
Jul 07 Python
实现Python3数组旋转的3种算法实例
Sep 16 Python
python如何控制进程或者线程的个数
Oct 16 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常用函数的用法详解
2013/05/10 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
帝国cms常用标签汇总
2015/07/06 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
JS实现商品橱窗特效
2020/01/09 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
介绍Python中内置的itertools模块
2015/04/29 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
党校学习思想汇报
2014/01/06 职场文书
中学家长会邀请函
2014/02/03 职场文书
小学生演讲稿大全
2014/04/25 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
详解TypeScript的基础类型
2022/02/18 Javascript
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS