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逐行读取文件内容的三种方法
Jan 20 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
Python爬虫爬验证码实现功能详解
Apr 14 Python
Python单体模式的几种常见实现方法详解
Jul 28 Python
使用Python的package机制如何简化utils包设计详解
Dec 11 Python
答题辅助python代码实现
Jan 16 Python
python实现按关键字筛选日志文件
Dec 24 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
Apr 11 Python
Python 中面向接口编程
May 20 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
学习jQuey中的return false
2015/12/18 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
Django添加sitemap的方法示例
2018/08/06 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
党校培训思想汇报
2014/01/03 职场文书
自我反省检讨书
2014/01/23 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
食品安全标语
2014/06/07 职场文书
《坐井观天》教学反思
2016/02/18 职场文书