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实现解数独程序代码
Apr 12 Python
python机器学习之神经网络(一)
Dec 20 Python
python基础教程项目二之画幅好画
Apr 02 Python
Python键盘输入转换为列表的实例
Jun 23 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
Python insert() / append() 用法 Leetcode实战演示
Mar 31 Python
Python四款GUI图形界面库介绍
Jun 05 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
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
jqgrid 简单学习笔记
2011/05/03 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
python机器学习之神经网络实现
2018/10/13 Python
python读取文本中的坐标方法
2018/10/14 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
Python自动抢红包教程详解
2019/06/11 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
python程序文件扩展名知识点详解
2020/02/27 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
澳洲的服装老品牌:SABA
2018/02/06 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
市场营销专业个人求职信范文
2013/12/14 职场文书
求职简历自我评价范例
2014/03/12 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
小学生优秀评语大全
2014/04/22 职场文书
结婚保证书范文
2014/04/29 职场文书
拆迁委托协议书
2014/09/15 职场文书
旷课检讨书500字
2014/10/14 职场文书
教师师德表现自我评价
2015/03/05 职场文书