python 使用转义序列,打印不同颜色的日志级别记录

本文介绍了如何在Python中利用转义序列自定义日志颜色,特别是在PyCharm终端中改变日志记录的颜色。内容包括转义序列的原理、颜色表的应用以及在遇到非终端输出时如何处理颜色序列的问题。
摘要由CSDN通过智能技术生成

在pycharm的终端控制台,打印出来的日志记录都是红色的,看着很不顺眼,因此希望能够自定义日志颜色。
实现过程:
由于控制台是一个终端,终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。

一、结合转义序列打印不同颜色的日志记录

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging
import time


class Logger(object):
    def __init__(self, custom_color=True):
        """
        构造日志器和处理器,以及设定常用的方法
        :param custom_color: 是否自定义颜色开关
        """

        self.custom_color = custom_color  # 自定义颜色

        try:
            # 创建一个logger(初始化logger)
            self.logger = logging.getLogger(__name__)
            self.logger.setLevel(logging.DEBUG)

            # 判断是否已存在handler,有则初始化handlers为[]
            if self.logger.handlers:
                self.logger.handlers = []

            # 定义日志文件的路径以及名称
            log_name = 'log.log'

            # 创建日志文件和控制台的handler
            self.fh = logging.FileHandler(log_name, encoding='utf-8')
            self.ch = logging.StreamHandler()

            # 定义输出格式
            formatter = logging.Formatter('[%(asctime)s] - [%(name)s] - [%(levelname)s] - %(message)s')
            self.fh.setFormatter(formatter)
            self.ch.setFormatter(formatter)

            # 定义处理器的日志级别
            self.fh.setLevel(logging.INFO)
            self.ch.setLevel(logging.DEBUG)

            # 给logger添加handler
            self.logger.addHandler(self.fh)
            self.logger.addHandler(self.ch)

        except Exception as e:
            print("输出日志失败! %s" % e)

    def record_color(self, color):
        """
        给日志记录加上颜色
        :param color: 颜色参数
        :return:
        """
        # 控制台不同的日志等级输出不同的颜色
        formatter = logging.Formatter(color % '[%(asctime)s] - [%(levelname)s] - %(message)s')
        # 定义handler的输出格式
        self
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值