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实现3行代码解简单的一元一次方程
Aug 18 Python
Python使用MD5加密字符串示例
Aug 22 Python
python中随机函数random用法实例
Apr 30 Python
python实现合并两个数组的方法
May 16 Python
人机交互程序 python实现人机对话
Nov 14 Python
pandas多级分组实现排序的方法
Apr 20 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
python实现网页自动签到功能
Jan 21 Python
python如何求数组连续最大和的示例代码
Feb 04 Python
Python基于requests实现模拟上传文件
Apr 21 Python
Python生成器next方法和send方法区别详解
May 30 Python
关于的python五子棋的算法
May 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
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
初始Nodejs
2014/11/08 NodeJs
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
树结构之JavaScript
2017/01/24 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
jQuery 改变P标签文本值方法
2018/02/24 jQuery
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
财政专业求职信范文
2014/02/19 职场文书
意向书范文
2014/03/31 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript