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 生成目录树及显示文件大小的代码
Jul 23 Python
python简单实现基于SSL的IRC bot实例
Jun 15 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
python 类详解及简单实例
Mar 24 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
Django集成celery发送异步邮件实例
Dec 17 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
jupyter 导入csv文件方式
Apr 21 Python
iPython pylab模式启动方式
Apr 24 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
PHP邮件专题
2006/10/09 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
checkbox 多选框 联动实现代码
2008/10/22 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
Node.js简单入门前传
2017/08/21 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
Python中文件操作简明介绍
2015/04/13 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
TensorFlow实现Logistic回归
2018/09/07 Python
python读文件的步骤
2019/10/08 Python
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
新娘父亲婚礼致辞
2014/01/16 职场文书
清扬洗发水广告词
2014/03/14 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
八项规定整改方案
2014/10/01 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
研讨会致辞
2015/07/31 职场文书