参考:http://www.jb51.net/article/42626.htm

参考:http://blog.csdn.net/u011541946/article/details/70198676

介绍如何写一个Python日志类,用来输出不同级别的日志信息到本地文件夹下的日志文件里。我们需要记录我们测试脚本到底做了什么事情,最好的办法是写事件监听。这个事件监听,对我们现在来说,还是有点复杂去理解,所以我这里,选择封装一个简单的日志类,同样达到这个效果。
我们大概需要如下日志输出效果:

问题分析:
我们需要封装一个简单的日志类,主要有以下内容:
1. 生成的日志文件格式是 年月日时分秒.log
2. 生成的xxx.log文件存储在项目根目录下Logs文件夹下
3. 这个日志类,支持INFO,ERROR两种日志级别
4. 日志里,每行日志输出,如上图,时间日期+执行类名称+日志级别+日志描述

解决问题思路:
1. 在根目录下新建一个Logs的文件夹,如何获取这个Log的相对路径,前面介绍过。
2. 日志的保存命名,需要系统时间,前面也介绍过时间格式化输出
3. Python中有一个logging模块来支持我们自定义封装一个新日志类。
4. 在脚本里,初始化一个日志类的实例对象,然后去控制输出INFO还是ERROR日志信息。

如果你想开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件,只要这样使用:

 # _*_ coding: utf-8 _*_
import logging
import os.path
import time class Logger(object):
def __init__(self, logger):
"""
指定保存日志的文件路径,日志级别,以及调用文件
将日志存入到指定的文件中
:param logger:
"""
# 创建一个logger
self.logger = logging.getLogger(logger)
self.logger.setLevel(logging.DEBUG) # 创建日志名称。
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
# os.getcwd()获取当前文件的路径,os.path.dirname()获取指定文件路径的上级路径
log_path = os.path.dirname(os.getcwd()) + '/Logs/'
log_name = log_path + rq + '.log'
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler(log_name)
fh.setLevel(logging.INFO) # 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO) # 定义handler的输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter) # 给logger添加handler
self.logger.addHandler(fh)
self.logger.addHandler(ch) def getlog(self):
return self.logger

最新文章

  1. Fastest Wordpress Theme -wpfast Download
  2. ObjectID和Handle
  3. Java跨平台原理
  4. jquery简单插件到复杂插件(2)--简单手风琴
  5. pkg-config问题:
  6. ActionContext详解
  7. jquery $.each遍历json数组方法
  8. linux笔记2.20
  9. Gradle 教程:第一部分,安装【翻译】(转)
  10. AVR编程_如何通过软件复位AVR?(转)
  11. Linux系列教程(十三)——Linux软件包管理之源码包、脚本安装包
  12. Haskell学习-函数式编程初探
  13. 为什么要学习Java虚拟机
  14. 2017 Python最新面试题及答案16道题
  15. MVC扩展HttpHandler
  16. Python3解《剑指》问题:“遇到奇数移至最前,遇到偶数移至最后”
  17. layoutSubviews相关总结
  18. 终端(terminal)、tty、shell、控制台(console)、bash之间的区别与联系
  19. hihocoder #1015 KMP
  20. Java回顾之反射

热门文章

  1. Sharepoint2013商务智能学习笔记之Performancepoint service 配置(九)
  2. 关于.net中的身份认证(AuthorizeAttribute)的问题
  3. 在Android中使用FlatBuffers(下篇)
  4. Swoole 整合成一个小框架
  5. ProtoBuf练习(六)
  6. Hadoop WordCount单词计数原理
  7. CF 979D Kuro and GCD and XOR and SUM(异或 Trie)
  8. 利用CSS制作脸书
  9. python web开发之flask框架学习(1) 创建flask项目
  10. 深入解析Android Design包——Behavior