python使用装饰器作日志处理的方法

 更新时间:2019年07月11日 16:21:06   作者:Memory_qq312141830   我要评论
今天小编就为大家分享一篇python使用装饰器作日志处理的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

装饰器这东西我看了一会儿才明白,在函数外面套了一层函数,感觉和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计算一个序列的平均值的方法

    这篇文章主要介绍了python计算一个序列的平均值的方法,涉及Python递归遍历与数学计算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python实现选择排序

    Python实现选择排序

    选择法也算是入门的一种排序算法,比起冒泡法,它的方法巧妙了一些,它的出发点在于“挑”,每次挑选数组的最值,与前置元素换位,然后继续挑选剩余元素的最值并重复操作。个人认为选择排序的意义不在于排序本身,而在于挑选和置换的方法,对于一些问题很有帮助。
    2017-06-06
  • Python学习笔记之迭代器和生成器用法实例详解

    Python学习笔记之迭代器和生成器用法实例详解

    这篇文章主要介绍了Python学习笔记之迭代器和生成器用法,结合实例形式详细分析了Python迭代器与生成器的功能、原理、定义及使用方法,需要的朋友可以参考下
    2019-08-08
  • python3 shelve模块的详解

    python3 shelve模块的详解

    这篇文章主要介绍了python3 shelve模块的详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • django 解决manage.py migrate无效的问题

    django 解决manage.py migrate无效的问题

    今天小编就为大家分享一篇django 解决manage.py migrate无效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python文本数据处理学习笔记详解

    python文本数据处理学习笔记详解

    这篇文章主要为大家详细介绍了python文本数据处理学习笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Python实现的爬取小说爬虫功能示例

    Python实现的爬取小说爬虫功能示例

    这篇文章主要介绍了Python实现的爬取小说爬虫功能,结合实例形式分析了Python爬取顶点小说站上的小说爬虫功能相关实现技巧,需要的朋友可以参考下
    2019-03-03
  • 浅谈python 线程池threadpool之实现

    浅谈python 线程池threadpool之实现

    这篇文章主要介绍了浅谈python 线程池threadpool之实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Python单链表简单实现代码

    Python单链表简单实现代码

    这篇文章主要介绍了Python单链表简单实现代码,结合实例形式分析了Python单链表的具体定义与功能实现技巧,需要的朋友可以参考下
    2016-04-04
  • python之PyQt按钮右键菜单功能的实现代码

    python之PyQt按钮右键菜单功能的实现代码

    这篇文章主要介绍了python PyQt按钮右键菜单功能的实现代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08

最新评论