Python使用logging结合decorator模式实现优化日志输出的方法


Posted in Python onApril 16, 2016

本文实例讲述了Python使用logging结合decorator模式实现优化日志输出的方法。分享给大家供大家参考,具体如下:

python内置的loging模块非常简便易用, 很适合程序运行日志的输出。

而结合python的装饰器模式,则可实现简明实用的代码。测试代码如下所示:

#! /usr/bin/env python2.7
# -*- encoding: utf-8 -*-
import logging
logging.basicConfig(format='[%(asctime)s] %(message)s', level=logging.INFO)
def time_recorder(func):
  """装饰器, 用在func方法执行前后, 增加运行信息"""
  def wrapper():
    logging.info("Begin to execute function: %s" % func.__name__)
    func()
    logging.info("Finish executing function: %s" % func.__name__)
  return wrapper
@time_recorder
def first_func():
  print "I'm first_function. I'm doing something..."
@time_recorder
def second_func():
  print "I'm second_function. I'm doing something..."
if __name__ == "__main__":
  first_func()
  second_func()

运行并得到输出:

[2014-04-01 18:02:13,724] Begin to execute function: first_func
I'm first_function. I'm doing something...
[2014-04-01 18:02:13,725] Finish executing function: first_func
[2014-04-01 18:02:13,725] Begin to execute function: second_func
I'm second_function. I'm doing something...
[2014-04-01 18:02:13,725] Finish executing function: second_func

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
Python使用gRPC传输协议教程
Oct 16 Python
使用CodeMirror实现Python3在线编辑器的示例代码
Jan 14 Python
python 表格打印代码实例解析
Oct 12 Python
Centos7 下安装最新的python3.8
Oct 28 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
Python中logger日志模块详解
Aug 04 Python
Python包管理工具pip的15 个使用小技巧
May 17 Python
Python使用redis pool的一种单例实现方式
Apr 16 #Python
说一说Python logging
Apr 15 #Python
Python Web框架Tornado运行和部署
Oct 19 #Python
Python爬虫爬验证码实现功能详解
Apr 14 #Python
Python实现简单登录验证
Apr 13 #Python
Python数组定义方法
Apr 13 #Python
Python基于select实现的socket服务器
Apr 13 #Python
You might like
怎样在UNIX系统下安装php3
2006/10/09 PHP
PHP4中session登录页面的应用
2008/07/25 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
jQuery前台数据获取实现代码
2011/03/16 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
在Pandas中处理NaN值的方法
2019/06/25 Python
python数据归一化及三种方法详解
2019/08/06 Python
python sorted函数的小练习及解答
2019/09/18 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
如何解决安装python3.6.1失败
2020/07/01 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
什么是命名空间(NameSpace)
2015/11/24 面试题
优秀的计算机专业求职信范文
2013/12/27 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
活动总结报告格式
2014/05/09 职场文书
关于学习的演讲稿
2014/05/10 职场文书
雷锋的观后感
2015/06/10 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
python实现局部图像放大
2021/11/17 Python