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正则表达式 re模块使用说明
May 19 Python
Python和php通信乱码问题解决方法
Apr 15 Python
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
python正则表达式的使用
Jun 12 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
python 保存float类型的小数的位数方法
Oct 17 Python
python多线程调用exit无法退出的解决方法
Feb 18 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
深入学习python多线程与GIL
Aug 26 Python
pandas的resample重采样的使用
Apr 24 Python
python开发入门——set的使用
Sep 03 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 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
php 数学运算验证码实现代码
2009/10/11 PHP
组合算法的PHP解答方法
2012/02/04 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
新闻内页-JS分页
2006/06/07 Javascript
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
jQuery $.each的用法说明
2010/03/22 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
Python交换变量
2008/09/06 Python
python实现SMTP邮件发送功能
2020/06/16 Python
python实现画一颗树和一片森林
2018/06/25 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Django 用户认证组件使用详解
2019/07/23 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
python实现滑雪者小游戏
2020/02/22 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
给分销商的致歉信
2014/01/14 职场文书
材料会计岗位职责
2014/03/06 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
2014财务年度工作总结
2014/11/11 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
岁月神偷观后感
2015/06/11 职场文书
react antd实现动态增减表单
2021/06/03 Javascript
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android