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使用urllib2获取网络资源实例讲解
Dec 02 Python
Python导入txt数据到mysql的方法
Apr 08 Python
python判断字符串是否是json格式方法分享
Nov 07 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
python Django的web开发实例(入门)
Jul 31 Python
Django Admin中增加导出CSV功能过程解析
Sep 04 Python
Django框架 查询Extra功能实现解析
Sep 04 Python
Python编译为二进制so可执行文件实例
Dec 23 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
python实现视频压缩功能
Dec 18 Python
Python 统计序列中元素的出现频度
Apr 26 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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
浅谈php提交form表单
2015/07/01 PHP
php处理带有中文URL的方法
2016/07/11 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
JS小框架 fly javascript framework
2009/11/26 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
JS延时提示框实现方法详解
2015/11/26 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
JS实现百度搜索框
2021/02/25 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python正则表达式的使用范例详解
2014/08/08 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
python中正则表达式与模式匹配
2019/05/07 Python
python pytest进阶之xunit fixture详解
2019/06/27 Python
200行python代码实现2048游戏
2019/07/17 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
django使用多个数据库的方法实例
2021/03/04 Python
大学生个人实习的自我评价
2014/02/15 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
Python Flask实现进度条
2022/05/11 Python