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中的函数用法入门教程
Sep 02 Python
python通过正则查找微博@(at)用户的方法
Mar 13 Python
Python的包管理器pip更换软件源的方法详解
Jun 20 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
shell命令行,一键创建 python 模板文件脚本方法
Mar 20 Python
python3+PyQt5实现文档打印功能
Apr 24 Python
python绘制直线的方法
Jun 30 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
Python中使用双下划线防止类属性被覆盖问题
Jun 27 Python
pygame实现弹球游戏
Apr 14 Python
Python 虚拟环境工作原理解析
Dec 24 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 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制作新闻系统的思路
2006/10/09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
PHP面向对象详解(三)
2015/12/07 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
python链表类中获取元素实例方法
2021/02/23 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
演讲稿开场白台词
2014/08/25 职场文书
电力培训心得体会
2014/09/02 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android