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脚本实现集群检测和管理功能
Mar 06 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python 正则表达式实现计算器功能
Apr 29 Python
python利用正则表达式搜索单词示例代码
Sep 24 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
Django实现文件上传下载
Oct 06 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
Mar 14 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
Python中的xlrd模块使用原理解析
May 21 Python
Python 里最强的地图绘制神器
Mar 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
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python正则表达式的使用
2017/06/12 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
django的settings中设置中文支持的实现
2019/04/28 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
理货员的岗位职责
2013/11/23 职场文书
干部培训自我鉴定
2014/01/22 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
美术教学感言
2014/02/22 职场文书
小学数学课题方案
2014/06/15 职场文书
领导班子对照检查材料
2014/09/22 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
学校证明范文
2015/06/24 职场文书
mysql事务对效率的影响分析总结
2021/10/24 MySQL
linux下安装redis图文详细步骤
2021/12/04 Redis
python 详解turtle画爱心代码
2022/02/15 Python
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL