一个彩色的日志,后续调用的时候,可以直接引用

一个彩色的日志,用于在输出框里输出彩色字体,并在文件保持处生成正常的字体
我这里的命名方式为:colors_logger.py

# -*- coding: utf-8 -*
# @Time    : 2024/8/14 15:08
# @Author  : huakuohao
# @File    : colors_logger.py
# @Project : B_daily_Project
# @Software: PyCharm
# love 
# If I can't be a god, I'll be a beast

import logging
import sys
import os
import time

# 公众号:右恩
class TerminalColor:
    RED = '\033[91m'
    GREEN = '\033[92m'
    YELLOW = '\033[93m'
    RESET = '\033[0m'
    BLUE = '\033[94m'
    MAGENTA = '\033[95m'
    CYAN = '\033[96m'
    WHITE = '\033[97m'
'''
30:黑色
31:红色
32:绿色
33:黄色(或称为棕色或橄榄色)
34:蓝色
35:品红(或称为紫色)
36:青色(或称为蓝绿色)
37:白色
90-97:亮色版本(亮黑、亮红、亮绿、亮黄、亮蓝、亮品红、亮青、亮白)
'''

class ColorFormatter(logging.Formatter):
    COLORS = {
        logging.DEBUG: TerminalColor.CYAN,
        logging.INFO: TerminalColor.BLUE,
        logging.WARNING: TerminalColor.MAGENTA,
        logging.ERROR: TerminalColor.RED,
        logging.CRITICAL: TerminalColor.GREEN
    }

    def format(self, record):
        level_color = self.COLORS.get(record.levelno, TerminalColor.RESET)
        reset_color = TerminalColor.RESET
        message = super().format(record)
        return f"{level_color}{message}{reset_color}"
def _reset_logger(log):
    for handler in log.handlers:
        handler.close()
        log.removeHandler(handler)
        del handler
    log.handlers.clear()
    log.propagate = False
    console_handle = logging.StreamHandler(sys.stdout)
    console_handle.setFormatter(
        ColorFormatter(
            "%(asctime)s- %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s",
            datefmt="%H:%M:%S",
        )
    )
    log_name = os.path.join(_ensure_log_path(), f"{time.strftime('%Y_%m_%d')}.log")
    file_handle = logging.FileHandler(log_name, encoding="utf-8")
    file_handle.setFormatter(
        logging.Formatter(
            "[%(asctime)s][%(levelname)s][%(filename)s:%(lineno)d] - %(message)s",
            datefmt="%Y-%m-%d %H:%M:%S",
        )
    )
    log.addHandler(file_handle)
    log.addHandler(console_handle)
# 公众号:右恩
def _ensure_log_path():
    log_path = os.path.join(os.getcwd(), 'logs')
    os.makedirs(log_path, exist_ok=True)
    return log_path

def _get_logger():
    log = logging.getLogger("log")
    _reset_logger(log)
    log.setLevel(logging.DEBUG)
    return log


# 日志句柄
logger = _get_logger()

if __name__ == '__main__':
    logger.info('This is an info message')
    logger.debug('This is a debug message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

后续调用

from colors_logger import logger
logger.info("这是一个日志")
# 公众号:右恩
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值