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基础教程之缩进介绍
Aug 29 Python
Python实现的RSS阅读器实例
Jul 25 Python
python使用opencv进行人脸识别
Apr 07 Python
python安装Scrapy图文教程
Aug 14 Python
python如何把嵌套列表转变成普通列表
Mar 20 Python
Python实现的计算器功能示例
Apr 26 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
Python常用特殊方法实例总结
Mar 22 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
python pptx复制指定页的ppt教程
Feb 14 Python
python相对企业语言优势在哪
Jun 12 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 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备份/还原MySQL数据库的代码
2011/01/06 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
轻量级 JS ToolTip提示效果
2010/07/20 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
详解Python中for循环的使用方法
2015/05/14 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
Python3解释器知识点总结
2019/02/19 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
应届生新闻编辑求职信
2013/11/19 职场文书
电子商务网站的创业计划书
2014/01/05 职场文书
女生节标语
2014/06/26 职场文书
生物工程专业求职信
2014/09/03 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
志愿者事迹材料
2014/12/26 职场文书
运动会闭幕词
2015/01/28 职场文书
资料员岗位职责
2015/02/10 职场文书
军事博物馆观后感
2015/06/05 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
pytorch 实现变分自动编码器的操作
2021/05/24 Python
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript