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 连连看连接算法
Nov 22 Python
python去掉字符串中重复字符的方法
Feb 27 Python
Python装饰器decorator用法实例
Nov 10 Python
python sort、sorted高级排序技巧
Nov 21 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Python字符串切片操作知识详解
Mar 28 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
python3爬取数据至mysql的方法
Jun 26 Python
Python pandas实现excel工作表合并功能详解
Aug 29 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
React如何避免重渲染
2018/04/10 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
python 命名规范知识点汇总
2020/02/14 Python
Python基于Faker假数据构造库
2020/11/30 Python
python 实现有道翻译功能
2021/02/26 Python
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
金融专业毕业生推荐信
2013/11/26 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
2015国庆节宣传语
2015/07/14 职场文书
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
pandas求平均数和中位数的方法实例
2021/08/04 Python
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python