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通过zlib实现压缩与解压字符串的方法
Nov 19 Python
极简的Python入门指引
Apr 01 Python
Python中使用PDB库调试程序
Apr 05 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
对tensorflow中cifar-10文档的Read操作详解
Feb 10 Python
pytorch masked_fill报错的解决
Feb 18 Python
opencv 阈值分割的具体使用
Jul 08 Python
Flask中sqlalchemy模块的实例用法
Aug 02 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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 图片上传实现代码 带详细注释
2010/04/29 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
python创建n行m列数组示例
2019/12/02 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
红旗团支部事迹材料
2014/01/27 职场文书
法律进社区实施方案
2014/03/21 职场文书
化工专业求职信
2014/07/01 职场文书
物业保安岗位职责
2014/07/02 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
2016情人节宣传语
2015/07/14 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
六年级情感作文之500字
2019/10/23 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
nginx结合openssl实现https的方法
2021/07/25 Servers
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers