欢迎访问宙启技术站
智能推送

自定义Terminal256Formatter()样式输出的Python代码实例

发布时间:2023-12-11 12:30:28

Terminal256Formatter是Python logging模块中的一个类,用于定义输出日志的格式和样式。它可以将日志记录以256色终端的方式进行格式化输出,使日志更加直观和易读。

下面是一个使用Terminal256Formatter自定义样式输出日志的Python代码实例:

import logging
import sys

class Terminal256Formatter(logging.Formatter):
    """
    自定义的Terminal256Formatter类,继承自logging.Formatter
    """
    colors = {
        'DEBUG': '\033[38;5;243m',
        'INFO': '\033[38;5;33m',
        'WARNING': '\033[38;5;229m',
        'ERROR': '\033[38;5;196m',
        'CRITICAL': '\033[38;5;160m',
    }
    reset_color = '\033[0m'

    def format(self, record):
        """
        格式化输出日志记录
        """
        message = super().format(record)
        levelname = record.levelname
        color = self.colors.get(levelname, '')
        return f"{color}{message}{self.reset_color}"

def main():
    # 创建一个Logger对象
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)

    # 创建一个StreamHandler用于输出到控制台
    handler = logging.StreamHandler(sys.stdout)
    handler.setLevel(logging.DEBUG)

    # 创建一个Terminal256Formatter并设置为handler的Formatter
    formatter = Terminal256Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)

    # 将handler添加到logger实例
    logger.addHandler(handler)

    # 输出不同级别的日志
    logger.debug('This is a debug message.')
    logger.info('This is an info message.')
    logger.warning('This is a warning message.')
    logger.error('This is an error message.')
    logger.critical('This is a critical message.')

if __name__ == '__main__':
    main()

运行以上代码,你将会看到不同级别的日志以不同颜色进行输出,如下所示:

2021-05-01 10:00:00,000 - __main__ - DEBUG - This is a debug message.
2021-05-01 10:00:00,000 - __main__ - INFO - This is an info message.
2021-05-01 10:00:00,000 - __main__ - WARNING - This is a warning message.
2021-05-01 10:00:00,000 - __main__ - ERROR - This is an error message.
2021-05-01 10:00:00,000 - __main__ - CRITICAL - This is a critical message.

在上面的代码中,我们首先继承了logging.Formatter类,然后覆盖了父类的format方法,用来自定义日志的格式化方式。我们通过设置不同级别的日志输出对应的颜色,然后将消息和颜色进行拼接,最终输出格式化后的日志记录。

然后,我们创建了一个Logger对象并设置日志级别为DEBUG,然后创建一个StreamHandler用于输出到控制台,并设置日志级别为DEBUG。接着,我们创建了一个Terminal256Formatter对象,并将其设置为handler的Formatter。最后,将handler添加到logger实例中。

最后,在maim函数中,我们分别输出了DEBUG、INFO、WARNING、ERROR和CRITICAL级别的日志消息,你会发现它们以不同的颜色进行了区分。