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装饰器使用方法实例
Nov 21 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 Python
python实现FTP服务器服务的方法
Apr 11 Python
TensorFlow Session会话控制&Variable变量详解
Jul 30 Python
对python 自定义协议的方法详解
Feb 13 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
vue常用指令代码实例总结
Mar 16 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 Python
Python函数对象与闭包函数
Apr 13 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
基于header的一些常用指令详解
2013/06/06 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
AngularJS快速入门
2015/04/02 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
详解Python中的__new__()方法的使用
2015/04/09 Python
详解python的数字类型变量与其方法
2016/11/20 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
python安装pil库方法及代码
2019/06/25 Python
python如何实现异步调用函数执行
2019/07/08 Python
Python 元组操作总结
2019/09/18 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
我爱家乡演讲稿
2014/09/12 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
2015年助残日活动总结
2015/03/27 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
JS中如何优雅的使用async await详解
2021/10/05 Javascript