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实现对中文文本分段分句,大致来说主要是以中文的句号、感叹、问号等符号进行分句,感兴趣的可以了解一下
    2023-03-03
  • python常用的各种排序算法原理与实现方法小结

    python常用的各种排序算法原理与实现方法小结

    这篇文章主要介绍了python常用的各种排序算法原理与实现方法,结合实例形式总结分析了冒泡排序、插入排序、选择排序、快速排序等排序算法的相关原理与实现方法,需要的朋友可以参考下
    2023-04-04
  • python 格式化输出百分号的方法

    python 格式化输出百分号的方法

    今天小编就为大家分享一篇python 格式化输出百分号的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 自然语言处理NLP TextRNN实现情感分类

    自然语言处理NLP TextRNN实现情感分类

    这篇文章主要为大家介绍了自然语言处理NLP TextRNN实现情感分类示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Python数据分析 Pandas Series对象操作

    Python数据分析 Pandas Series对象操作

    这篇文章主要介绍了Python数据分析之Pandas Series对象,文章基于python的相关资料展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • python编写一个GUI倒计时器

    python编写一个GUI倒计时器

    这篇文章主要为大家详细介绍了python编写一个GUI倒计时器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Python下载网易云歌单歌曲的示例代码

    Python下载网易云歌单歌曲的示例代码

    这篇文章主要介绍了Python下载网易云歌单歌曲的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • python中的字符串切割 maxsplit

    python中的字符串切割 maxsplit

    这篇文章主要介绍了python中的字符串切割 maxsplit,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python获取指定目录下所有文件名列表的方法

    python获取指定目录下所有文件名列表的方法

    这篇文章主要介绍了python获取指定目录下所有文件名列表的方法,涉及Python目录及文件操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • miniconda3介绍、安装以及使用教程

    miniconda3介绍、安装以及使用教程

    Miniconda是一款小巧的python环境管理工具,安装包大约只有50M多点,其安装程序中包含conda软件包管理器和Python,下面这篇文章主要给大家介绍了关于miniconda3介绍、安装以及使用的相关资料,需要的朋友可以参考下
    2023-02-02

最新评论