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处理中文编码和判断编码示例
Feb 26 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Tensorflow环境搭建的方法步骤
Feb 07 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
python3 写一个WAV音频文件播放器的代码
Sep 27 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
python安装后的目录在哪里
Jun 21 Python
Django集成MongoDB实现过程解析
Dec 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
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
Python Requests 基础入门
2016/04/07 Python
python实现XML解析的方法解析
2019/11/16 Python
jupyter notebook 多行输出实例
2020/04/09 Python
Django通过json格式收集主机信息
2020/05/29 Python
Python devel安装失败问题解决方案
2020/06/09 Python
Python接收手机短信的代码整理
2020/08/02 Python
Python 中如何写注释
2020/08/28 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
师范生自荐信
2013/10/27 职场文书
热能动力工程毕业生自荐信
2013/11/07 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
金融事务专业求职信
2014/04/25 职场文书
学校募捐倡议书
2014/05/14 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
学术会议通知
2015/04/15 职场文书
2019思想汇报范文
2019/05/21 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL