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

 更新时间:2019-07-11 22:00:39   作者:佚名   我要评论(0)

装饰器这东西我看了一会儿才明白,在函数外面套了一层函数,感觉和java里的aop功能很像;写了2个装饰器日志的例子,
第一个是不带参数的装饰器用法示例,功能

装饰器这东西我看了一会儿才明白,在函数外面套了一层函数,感觉和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装饰器简单用法实例小结
  • python函数装饰器用法实例详解
  • 举例讲解Python中装饰器的用法

相关文章

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

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

    装饰器这东西我看了一会儿才明白,在函数外面套了一层函数,感觉和java里的aop功能很像;写了2个装饰器日志的例子, 第一个是不带参数的装饰器用法示例,功能
    2019-07-11
  • 微信小程序实现类似微信点击语音播放效果

    微信小程序实现类似微信点击语音播放效果

    本文实例为大家分享了微信小程序类似平常微信语音聊天的效果,不会互相干扰播放状态,供大家参考,具体内容如下 根据开发的需求,先理清一下思路,点击语音播
    2019-07-08
  • go时间/时间戳操作大全(小结)

    go时间/时间戳操作大全(小结)

    基本操作 01: 获取当前时间 dateTime := time.Now() fmt.Println(dateTime) 02: 获取年 月 日 时 分 秒 纳秒 year := time.Now().Year() //年 fmt.P
    2019-07-08
  • c++中创建.in文件的方法步骤

    c++中创建.in文件的方法步骤

    c++比赛中,总是要求使用文件输入输出的,那么.in/.out文件该怎样创建呢?怎样才能被软件调用呢? 打开任意文件夹,然后右击创建一个文本文档。 如图,点击
    2019-07-08
  • Python OpenCV 使用滑动条来调整函数参数的方法

    Python OpenCV 使用滑动条来调整函数参数的方法

    引言 在观察OpenCV中某个函数在不同参数的情况下,所得到的效果的时候,我之前是改一次参数运行一次,这样做起来操作麻烦,效率低下。为了更便捷的观察参数变
    2019-07-08
  • python提取log文件内容并画出图表

    python提取log文件内容并画出图表

    之前在excel里面分析log数据,简直日了*了。 现在用python在处理日志数据. 主要涉及 matplotlib,open和循环的使用。 日志内容大致如下 2016-10-21 21:0
    2019-07-08
  • python字符串查找函数的用法详解

    python字符串查找函数的用法详解

    python字符串查找函数的使用 打开Python开发工具IDLE,新建‘findstr.py'文件,并写代码如下: s ='/ab/bx,.s' print (s.find('/x')) 注意find是匹配子字
    2019-07-08
  • python设计微型小说网站(基于Django+Bootstrap框架)

    python设计微型小说网站(基于Django+Bootstrap框架)

    一、项目背景: 为了回顾关于django的文件上传和分页功能,打算写一个微型的小说网站练练手。花了一个下午的时间,写了个小项目,发现其中其实遇到了许多问
    2019-07-08
  • python里运用私有属性和方法总结

    python里运用私有属性和方法总结

    如何在PYTHON里运用私有属性和方法 class File: def __init__(self, name): self.name = name self.code = "ABCDEF" file_A = File("f
    2019-07-08
  • Python参数类型以及常见的坑详解

    Python参数类型以及常见的坑详解

    导语 由于之前遇到过几次有关于参数类型的坑,以及经常容易把一些参数类型搞混淆,现在做一下有关参数类型的总结记录以及对之前踩坑经历的分析。 参数类型
    2019-07-08

最新评论