Python日志输出不同颜色字体并打印到日志文件

该代码创建了一个自定义的日志类MyLogs,用于在Python中实现彩色的日志输出到控制台以及将日志记录到文件。它使用了pandas库来设置显示选项,以及logging和colorlog库来处理不同级别的日志(DEBUG,INFO,WARNING,ERROR,CRITICAL),并能根据时间生成日志文件名。
摘要由CSDN通过智能技术生成
# -*- coding: utf-8 -*-
'''
@Time    : 2023-04-03 14:57
@Author  : AnTi
@File    : test.py
'''
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.width', 10000)
pd.set_option('display.max_colwidth', 10000)
pd.set_option('display.max_rows', None)

import logging
import colorlog
import os
import time

# 设置相对路径
ProjectPath = os.path.split(os.path.split(os.path.realpath(__file__))[0])[0]

LogsPath = os.path.join('./',  'logs\log_{0}'.format(time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime())))

# 设置控制台打印的颜色
log_colors_config = {
    'DEBUG': 'cyan',
    'INFO': 'black',
    'WARNING': 'yellow',
    'ERROR': 'red',
    'CRITICAL': 'red',
}


class MyLogs:
    """
    在其他文件调用方法
    1. from . import MyLogs  把这个文件导入
    2. self.log = MyLogs()  实例化类
    3. self.log.info("想要打印到日志的话")  这个分五个等级
        self.log.error("错误日志")
        self.log.info('正常日志信息')
        ......
     4. 使用两个格式,格式一打印到控制台,格式二打印到日志(使用格式一打印因为颜色会出现[30m日志[0m)
    Python日志输出不同颜色字体并打印到日志文件
    """

    def mylog(self, level, msg):
        logger = logging.getLogger('GuangDian_API')
        logger.setLevel(logging.DEBUG)
        formatter = colorlog.ColoredFormatter(
            '%(log_color)s[%(asctime)s] [%(name)s] [%(levelname)s]: %(message)s',
            log_colors=log_colors_config)
        formatter2 = logging.Formatter('[%(asctime)s] [%(name)s] [%(levelname)s]: %(message)s')
        sh = logging.StreamHandler()  # 输出到控制台
        sh.setLevel(logging.DEBUG)
        sh.setFormatter(formatter)  # 指定格式

        fh = logging.FileHandler(LogsPath, encoding="utf-8")
        fh.setLevel(logging.DEBUG)
        fh.setFormatter(formatter2)
        logger.addHandler(sh)
        logger.addHandler(fh)  # 输出到文件

        if level == "DEBUG":
            logger.debug(msg)
        elif level == "INFO":
            logger.info(msg)
        elif level == "WARNING":
            logger.warning(msg)
        elif level == "ERROR":
            logger.error(msg)
        elif level == "CRITICAL":
            logger.critical(msg)
        logger.removeHandler(sh)
        logger.removeHandler(fh)
        fh.close() #不关闭会警告

    def debug(self, msg):
        self.mylog("DEBUG", msg)

    def info(self, msg):
        self.mylog("INFO", msg)

    def warning(self, msg):
        self.mylog("WARNING", msg)

    def error(self, msg):
        self.mylog("ERROR", msg)

    def critical(self, msg):
        self.mylog("CRITICAL", msg)


if __name__ == '__main__':
    log = MyLogs()
    log.debug("---测试开始----")
    log.info("操作步骤")
    log.warning("----测试结束----")
    log.error("----测试错误----")

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安替-AnTi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值