python使用装饰器作日志处理的方法
作者:Memory_qq312141830 发布时间:2021-08-17 03:20:32
标签: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'
```
来源:https://blog.csdn.net/Memory_and_Dream/article/details/73881709
0
投稿
猜你喜欢
- 微信小程序中使用地图(map)组件,通过点击(tap)获取经纬度,按照官方的回应,暂时是没法做到的,从地图组件API多有残缺判断,怀疑是个实
- 具体代码如下所示:import numpy as npfrom matplotlib import pyplot as pltfrom sc
- 点击获取后,返回2s后的鼠标位置,显示在文本框(需要用pip命令安装所需的的库)(pip install 模块名比如 安装pyautogui
- 载入库绘制表格我们需要用到python库中的matplotlib库import matplotlib.pyplot as plt一、折线图#
- 在做分类模型时候,需要在DataFrame中按照行获取数据以便于进行训练和测试。import pandas as pddict=[[1,2,
- 模块化分页1.查询语句块<% 取得当前文件名 temp = Split(request.ServerV
- 假设要生成一千万个随机数,常规的做法如下:var numbers = [];for (var&nbs
- Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环。1.首先
- Options Indexes FollowSymLinks ExecCGI  
- 看起来现在经常用到这样的效果来提高用户体验,所以就没事写了一个输入框提示列表的效果使用宽屏的朋友麻烦帮忙测试下,列表的位置有没有错位。代码可
- 本文实例为大家分享了Go实现文件上传的具体代码,供大家参考,具体内容如下文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进
- 编写Python代码,大家都需要遵循PEP8,因此在pycharm中,如何设置每行最大长度限制,成为了一个小的知识盲点,在这里做一下记录,方
- 您可以使用 ObjectContext 对象提交或放弃一项由 Microsoft Transaction Server (MTS) 管理的事
- 分布式编程的难点在于:1.服务器之间的通信,主节点如何了解从节点的执行进度,并在从节点之间进行负载均衡和任务调度;2.如何让多个服务器上的进
- 简易网页搜集器前面我们已经学会了简单爬取浏览器页面的爬虫。但事实上我们的需求当然不是爬取搜狗首页或是B站首页这么简单,再不济,我们都希望可以
- 一、噪声 我们将常会听到平滑(去噪),锐化(和平滑是相反的),那我们就会有疑惑?什么是噪声呢?图像噪声是指存在于图像数
- 作用域链(Scope Chain)JavaScript中的一种重要机制,JS中所有的标识符(Identifier)都是通过Scope Cha
- 1.函数对象前面我们学习了关于Python中的变量类型,例如int、str、bool、list等等…&hell
- 本文实例讲述了php实现的支持断点续传的文件下载类及其用法,是非常实用的技巧。分享给大家供大家参考。具体方法如下:通常来说,php支持断点续
- 实体有五种预定义的XML实体,HTML编码者应该熟悉。XML文档中的字符&、<、>、"和'被分别表示为