Python之自定义封装一个简单的Log类
2024-08-24 15:08:02
参考: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
最新文章
- Fastest Wordpress Theme -wpfast Download
- ObjectID和Handle
- Java跨平台原理
- jquery简单插件到复杂插件(2)--简单手风琴
- pkg-config问题:
- ActionContext详解
- jquery $.each遍历json数组方法
- linux笔记2.20
- Gradle 教程:第一部分,安装【翻译】(转)
- AVR编程_如何通过软件复位AVR?(转)
- Linux系列教程(十三)——Linux软件包管理之源码包、脚本安装包
- Haskell学习-函数式编程初探
- 为什么要学习Java虚拟机
- 2017 Python最新面试题及答案16道题
- MVC扩展HttpHandler
- Python3解《剑指》问题:“遇到奇数移至最前,遇到偶数移至最后”
- layoutSubviews相关总结
- 终端(terminal)、tty、shell、控制台(console)、bash之间的区别与联系
- hihocoder #1015 KMP
- Java回顾之反射
热门文章
- Sharepoint2013商务智能学习笔记之Performancepoint service 配置(九)
- 关于.net中的身份认证(AuthorizeAttribute)的问题
- 在Android中使用FlatBuffers(下篇)
- Swoole 整合成一个小框架
- ProtoBuf练习(六)
- Hadoop WordCount单词计数原理
- CF 979D Kuro and GCD and XOR and SUM(异或 Trie)
- 利用CSS制作脸书
- python web开发之flask框架学习(1) 创建flask项目
- 深入解析Android Design包——Behavior