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



更多相关文章

  1. python 带正则的search 模块
  2. 八大经典排序算法基本思想及代码实现(插入排序,希尔排序,选择排序,
  3. 贝叶斯学习 -- matlab、python代码分析(3)
  4. Linux - 模块编程初试
  5. UNIX-LINUX编程实践教程->第八章->实例代码注解->写一个简单的sh
  6. Linux下objdump查看C程序编译后的汇编代码
  7. 让 Linux 启动时加载自己的驱动模块 .ko
  8. 软交换FreeSWITCH系统概要和源代码分析预备知识
  9. linux 内核模块学习

随机推荐

  1. 路径提供者文档目录是一个安全的位置吗?
  2. 如何在Android 7.0+中检索SD卡的序列号?
  3. Android多线程下载远程图片【转】
  4. 转:Android Studio Error:Connection time
  5. MD5加密,java工具类 String 转变成MD5 St
  6. 没有包lib32z1,lib32ncurses5,lib32stdc+
  7. Android TextView设置字体风格
  8. 如何在Fragment中的WebView中添加“Go Ba
  9. Android自定义控件——开源组件SlidingMe
  10. Android自动化测试学习路线