自定义一个python日志类
前言
本文介绍如何写一个Python日志类,用来输出不同级别的日志信息到不同的日志文件里。
需求
1、将不同级别的日志输出到不同的日志文件里,方便自己排查问题。
2、生成的日志放在项目根目录的logs文件夹里
3、日志类支持DEBUG,INFO,WARNING,ERROR,CRITICAL五种级别日志。
4、日志输出格式 时间日期,日志级别,日志信息
自定义日志类如下:
# coding:utf8
'''
该日志类可以把不同级别的日志输出到不同的日志文件中
'''
import os
import sys
import loggingclass Logger:def __init__(self):handlers = {logging.NOTSET: "logs/notset.log",logging.DEBUG: "logs/debug.log",logging.INFO: "logs/info.log",logging.WARNING: "logs/warning.log",logging.ERROR: "logs/error.log",logging.CRITICAL: "logs/critical.log",}self.__loggers = {}logLevels = handlers.keys()fmt = logging.Formatter('%(asctime)s [%(levelname)s]: %(message)s')for level in logLevels:#创建loggerlogger = logging.getLogger(str(level))logger.setLevel(level)#创建hander用于写日日志文件log_path = os.path.abspath(handlers[level])fh = logging.FileHandler(log_path)#定义日志的输出格式fh.setFormatter(fmt)fh.setLevel(level)#给logger添加handerlogger.addHandler(fh)self.__loggers.update({level: logger})def info(self, message):self.__loggers[logging.INFO].info(message)def error(self, message):self.__loggers[logging.ERROR].error(message)def warning(self, message):self.__loggers[logging.WARNING].warning(message)def debug(self, message):self.__loggers[logging.DEBUG].debug(message)def critical(self, message):self.__loggers[logging.CRITICAL].critical(message)if __name__ == "__main__":logger = Logger()logger.debug("thisisdebug")logger.info("info")logger.warning("warning")logger.error("error")logger.critical("critical")
自定义一个python日志类相关推荐
- python日志类logging的使用
python日志类logging的使用 文章目录 python日志类logging的使用 1.简单使用 2.设置日志级别 3.格式化输出日志 4.一个常用的例子和handler的使用 5 捕获 Tra ...
- python 元类工厂模式_Python进阶丨如何创建你的第一个Python元类?
摘要:通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类. Python元类设置类的行为和规则.元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一. ...
- Python进阶丨如何创建你的第一个Python元类?
摘要:通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类. Python元类设置类的行为和规则.元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一. ...
- 自定义一个三维向量类,并实现相关运算
自定义一个三维向量类,并实现向量之间的加法.减法,以及向量与标量之间的乘法与除法运算 class Vector:def __init__(self,a,b,c):self.x=aself.y=bsel ...
- python自定义一个可迭代类_python进阶之自定义可迭代的类
自定义可迭代的类 列表可以获取列表的长度,然后使用变量i对列表索引进行循环,也可以获取集合的所有元素,且容易理解.没错,使用列表的代码是容易理解,也很好操作,但这是要付出代价的.列表之所以可以用索引来 ...
- 如何创建你的第一个Python元类?
Python元类设置类的行为和规则.元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一.通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类.本文介绍 ...
- 自定义一个SharedPreferences工具类
这是一个操作SharedPreferences的工具类,封装了对sharedPreferences的操作. public class SharedpreferencesUtil {//SharedPr ...
- 手把手教你实现一个 Python 计时器
作者 | 云朵君 来源 | 数据STUDIO 虽然许多数据工作者认为 Python 是一种有效的编程语言,但纯 Python 程序比C.Rust 和 Java 等编译语言中的对应程序运行得更慢,为了更 ...
- Django中--自定义模型管理器类
BookInfo.objects.all()->objects是一个什么东西呢? 答:objects是models.Manger类的一个对象,是Django帮我自动生成的管理器对象,通过这个管理 ...
- python 多线程 类_Python中如何自定义一个多线程类呢?
摘要: 下文讲述Python中自定义一个多线程类的方法分享,如下所示: 实现思路: 1.定义一个类继承threading.Thread 2.在自定义类中构造函数重写run方法 例: Python3中自 ...
最新文章
- 我的网站搭建 (第十七天) celery 定时刷新缓存
- Caffe使用step by step:caffe框架下的基本操作和分析
- 密码技术--消息认证码及go语言应用
- spring 请求转码_Spring请求级备忘录
- java 自定义xml_6.1 如何在spring中自定义xml标签
- jquery 父元素相邻元素_Jquery中几种查找节点的方法
- 基于神经网络预测车道行驶的自动驾驶
- jsp mysql 乱码_jsp插入mysql数据库后乱码的解决办法
- 提前观摩打二字计算机英语,英语口语国赛规划.doc
- Struts配置文件的加载顺序
- 自动化脚本任务计划程序(Windows)
- 头脑王者源码微信答题小程序pk知识问答源码介绍
- theos tweak导入自定义类
- 百度竞价软件测试面试,【百度SEM基础试题】百度推广竞价专员基础知识测试
- R语言学习笔记之str函数
- 压力传感器的种类与工作原理
- s鼠标在计算机哪部分里,罗技g602和g700s哪个好_罗技g602鼠标怎么样【详细介绍】-太平洋IT百科...
- 数字IC设计(ASIC设计)完整流程详解
- Asterisk模拟卡的FXO(外线)和FXS(内线)端口详解
- 理解COCO的评价指标:AP,AP50,AP70,mAP,AP[.50:.05:.95]
热门文章
- 论文解读:基于图神经网络与蛋白质接触图的药靶亲和力预测(一)2021SC@SDUSC
- 利用指针作为游标,编写程序完成将输入字符串复制到一个字符数组中,要求每复制三个字符之后插入一个空格。 例如,若给a输入字符串:ABCDEFGHKIJK,字符数组中的内容为:ABC DEF GH
- 系统检测,是否引证:否
- phyton基础-01
- 深度学习的四种激活函数
- size与capacity的区别
- 实例解读模拟电子技术完全学习与应用
- Pygame实战之外星人入侵NO.5——操作子弹
- 菜鸟必看IPC空连接的使用(转载)
- 我的世界服务器矿怎么无限刷,我的世界中可以无限刷矿的指令是什么quest; | 手游网游页游攻略大全...