前言

本文介绍如何写一个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日志类相关推荐

  1. python日志类logging的使用

    python日志类logging的使用 文章目录 python日志类logging的使用 1.简单使用 2.设置日志级别 3.格式化输出日志 4.一个常用的例子和handler的使用 5 捕获 Tra ...

  2. python 元类工厂模式_Python进阶丨如何创建你的第一个Python元类?

    摘要:通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类. Python元类设置类的行为和规则.元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一. ...

  3. Python进阶丨如何创建你的第一个Python元类?

    摘要:通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类. Python元类设置类的行为和规则.元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一. ...

  4. 自定义一个三维向量类,并实现相关运算

    自定义一个三维向量类,并实现向量之间的加法.减法,以及向量与标量之间的乘法与除法运算 class Vector:def __init__(self,a,b,c):self.x=aself.y=bsel ...

  5. python自定义一个可迭代类_python进阶之自定义可迭代的类

    自定义可迭代的类 列表可以获取列表的长度,然后使用变量i对列表索引进行循环,也可以获取集合的所有元素,且容易理解.没错,使用列表的代码是容易理解,也很好操作,但这是要付出代价的.列表之所以可以用索引来 ...

  6. 如何创建你的第一个Python元类?

    Python元类设置类的行为和规则.元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一.通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类.本文介绍 ...

  7. 自定义一个SharedPreferences工具类

    这是一个操作SharedPreferences的工具类,封装了对sharedPreferences的操作. public class SharedpreferencesUtil {//SharedPr ...

  8. 手把手教你实现一个 Python 计时器

    作者 | 云朵君 来源 | 数据STUDIO 虽然许多数据工作者认为 Python 是一种有效的编程语言,但纯 Python 程序比C.Rust 和 Java 等编译语言中的对应程序运行得更慢,为了更 ...

  9. Django中--自定义模型管理器类

    BookInfo.objects.all()->objects是一个什么东西呢? 答:objects是models.Manger类的一个对象,是Django帮我自动生成的管理器对象,通过这个管理 ...

  10. python 多线程 类_Python中如何自定义一个多线程类呢?

    摘要: 下文讲述Python中自定义一个多线程类的方法分享,如下所示: 实现思路: 1.定义一个类继承threading.Thread 2.在自定义类中构造函数重写run方法 例: Python3中自 ...

最新文章

  1. 我的网站搭建 (第十七天) celery 定时刷新缓存
  2. Caffe使用step by step:caffe框架下的基本操作和分析
  3. 密码技术--消息认证码及go语言应用
  4. spring 请求转码_Spring请求级备忘录
  5. java 自定义xml_6.1 如何在spring中自定义xml标签
  6. jquery 父元素相邻元素_Jquery中几种查找节点的方法
  7. 基于神经网络预测车道行驶的自动驾驶
  8. jsp mysql 乱码_jsp插入mysql数据库后乱码的解决办法
  9. 提前观摩打二字计算机英语,英语口语国赛规划.doc
  10. Struts配置文件的加载顺序
  11. 自动化脚本任务计划程序(Windows)
  12. 头脑王者源码微信答题小程序pk知识问答源码介绍
  13. theos tweak导入自定义类
  14. 百度竞价软件测试面试,【百度SEM基础试题】百度推广竞价专员基础知识测试
  15. R语言学习笔记之str函数
  16. 压力传感器的种类与工作原理
  17. s鼠标在计算机哪部分里,罗技g602和g700s哪个好_罗技g602鼠标怎么样【详细介绍】-太平洋IT百科...
  18. 数字IC设计(ASIC设计)完整流程详解
  19. Asterisk模拟卡的FXO(外线)和FXS(内线)端口详解
  20. 理解COCO的评价指标:AP,AP50,AP70,mAP,AP[.50:.05:.95]

热门文章

  1. 论文解读:基于图神经网络与蛋白质接触图的药靶亲和力预测(一)2021SC@SDUSC
  2. 利用指针作为游标,编写程序完成将输入字符串复制到一个字符数组中,要求每复制三个字符之后插入一个空格。 例如,若给a输入字符串:ABCDEFGHKIJK,字符数组中的内容为:ABC DEF GH
  3. 系统检测,是否引证:否
  4. phyton基础-01
  5. 深度学习的四种激活函数
  6. size与capacity的区别
  7. 实例解读模拟电子技术完全学习与应用
  8. Pygame实战之外星人入侵NO.5——操作子弹
  9. 菜鸟必看IPC空连接的使用(转载)
  10. 我的世界服务器矿怎么无限刷,我的世界中可以无限刷矿的指令是什么quest; | 手游网游页游攻略大全...