Python中logging:设置打印级别,打印格式,打印颜色

目录

前言

一、引入库

二、实现代码

三、运行结果

四、补充知识

                logging模块的日志级别


前言

控制log的打印级别,打印格式,控制台根据log级别打印不同的颜色


一、引入库

import logging
import colorlog
import datetime
import os

二、实现代码

import logging
import colorlog
import datetime
import os


class Logging(object):

    def log(self, level='INFO'):  # 生成日志的主方法,传入对那些级别及以上的日志进行处理

        log_colors_config = {
            'DEBUG': 'white',
            'INFO': 'white',
            'WARNING': 'yellow',
            'ERROR': 'red',
            'CRITICAL': 'bold_red',
        }

        logger = logging.getLogger()  # 创建日志器
        # levle = getattr(logging, level)  # 获取日志模块的的级别对象属性
        logger.setLevel(level)  # 设置日志级别
        # console_handler.setLevel(logging.DEBUG)
        # file_handler.setLevel(logging.INFO)

        root_path = os.getcwd()
        file_name = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + ".log"
        log_path = os.path.join(root_path, r"output\logfiles", file_name)

        if not logger.handlers:  # 作用,防止重新生成处理器
            sh = logging.StreamHandler()  # 创建控制台日志处理器
            fh = logging.FileHandler(filename=log_path, mode='a', encoding="utf-8")  # 创建日志文件处理器
            # 创建格式器
            fmt = logging.Formatter(
                fmt='[%(asctime)s.%(msecs)03d] %(filename)s:%(lineno)d [%(levelname)s]: %(message)s',
                datefmt='%Y-%m-%d  %H:%M:%S')

            sh_fmt = colorlog.ColoredFormatter(
                fmt='%(log_color)s[%(asctime)s.%(msecs)03d] %(filename)s:%(lineno)d [%(levelname)s]: %(message)s',
                datefmt='%Y-%m-%d  %H:%M:%S',
                log_colors=log_colors_config)
            # 给处理器添加格式
            sh.setFormatter(fmt=sh_fmt)
            fh.setFormatter(fmt=fmt)
            # 给日志器添加处理器,过滤器一般在工作中用的比较少,如果需要精确过滤,可以使用过滤器
            logger.addHandler(sh)
            logger.addHandler(fh)
        return logger  # 返回日志器


if __name__ == '__main__':
    logger = Logging().log(level='INFO')
    logger.debug("11111111111")
    logger.info("22222222")
    logger.warning("33333333")

控制台根据log级别打印不同的颜色,注意以下代码:

sh_fmt = colorlog.ColoredFormatter(
                fmt='%(log_color)s[%(asctime)s.%(msecs)03d] %(filename)s:%(lineno)d [%(levelname)s]: %(message)s',
                datefmt='%Y-%m-%d  %H:%M:%S',
                log_colors=log_colors_config)
# 给处理器添加格式
sh.setFormatter(fmt=sh_fmt)

三、运行结果

[2022-10-11  14:50:54.449] t1.py:53 [INFO]: 22222222
[2022-10-11  14:50:54.449] t1.py:54 [WARNING]: 33333333

设置的log级别是INFO, 结果没有显示Debug级别的log. 

四、补充知识

logging模块的日志级别

logging模块默认定义了以下几个日志等级。

日志等级(level)描述
DEBUG最详细的日志信息,典型应用场景是 问题诊断
INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值