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实现DNS正向查询、反向查询的例子
Apr 25 Python
编写Python的web框架中的Model的教程
Apr 29 Python
详解Python3中的迭代器和生成器及其区别
Oct 09 Python
python实现停车管理系统
Nov 30 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
Python OrderedDict的使用案例解析
Oct 25 Python
python爬虫之遍历单个域名
Nov 20 Python
opencv python如何实现图像二值化
Feb 03 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
Python如何发送与接收大型数组
Aug 07 Python
Jupyter notebook 更改文件打开的默认路径操作
May 21 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
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
基于jquery的表头固定的若干方法
2011/01/27 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
jQuery实现本地存储
2020/12/22 jQuery
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
numpy库reshape用法详解
2020/04/19 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
css3media响应式布局实例
2016/07/08 HTML / CSS
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
送货司机岗位职责
2013/12/11 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
九华山导游词
2015/02/03 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
色戒观后感
2015/06/12 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
2019银行竞聘书
2019/06/21 职场文书
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
四十九个javascript小知识实用技巧
2021/11/20 Javascript