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 logging类库使用例子
Nov 22 Python
Python连接phoenix的方法示例
Sep 29 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
Aug 31 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
Python实现Singleton模式的方式详解
Aug 08 Python
python将print输出的信息保留到日志文件中
Sep 27 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
python实现堆排序的实例讲解
Feb 21 Python
Python正则表达式如何匹配中文
May 27 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 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
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
玩转虚拟域名◎+ .
2006/10/09 PHP
PHP如何解决网站大流量与高并发的问题
2011/06/25 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[04:16]DOTA2英雄梦之声_第09期_斧王
2014/06/21 DOTA
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
python如何统计代码运行的时长
2019/07/24 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
Python 音频生成器的实现示例
2019/12/24 Python
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
感恩父母主题班会
2015/08/12 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python