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中的集合类型操作符
Aug 19 Python
Django查询数据库的性能优化示例代码
Sep 24 Python
Python面向对象编程基础解析(二)
Oct 26 Python
Python进程间通信Queue实例解析
Jan 25 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
python使用PyQt5的简单方法
Feb 27 Python
python实现爬取百度图片的方法示例
Jul 06 Python
Django框架教程之中间件MiddleWare浅析
Dec 29 Python
python为什么会环境变量设置不成功
Jun 23 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 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
PHP中常用数组处理方法实例分析
2008/08/30 PHP
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
jQuery 对象中的类数组操作
2009/04/27 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
详解Python使用tensorflow入门指南
2018/02/09 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
Python实战之制作天气查询软件
2019/05/14 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
会计岗位职责模板
2014/03/12 职场文书
婚礼主持结束词
2014/03/13 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
解除劳动合同证明书
2014/09/26 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年司机工作总结
2014/11/21 职场文书
教师反邪教心得体会
2016/01/15 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS