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中数据解析
May 05 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
http请求 request失败自动重新尝试代码示例
Jan 25 Python
Python hashlib模块用法实例分析
Jun 12 Python
python3安装speech语音模块的方法
Dec 24 Python
python里dict变成list实例方法
Jun 26 Python
Django 缓存配置Redis使用详解
Jul 23 Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
python实现快递价格查询系统
Mar 03 Python
Python 生成VOC格式的标签实例
Mar 10 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
如何去掉文章里的 html 语法
2006/10/09 PHP
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
客户端静态页面玩分页
2006/06/26 Javascript
新浪中用来显示flash的函数
2007/04/02 Javascript
Javascript 读后台cookie代码
2008/09/15 Javascript
js电信网通双线自动选择技巧
2008/11/18 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
简述Python中的面向对象编程的概念
2015/04/27 Python
Python Property属性的2种用法
2015/06/21 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
HTML5标签大全
2016/11/23 HTML / CSS
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
大学生标准自荐书
2014/06/15 职场文书
设计师求职信
2014/07/01 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript