自定义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()
运行以上代码,你将会看到不同级别的日志以不同颜色进行输出,如下所示:
[38;5;243m2021-05-01 10:00:00,000 - __main__ - DEBUG - This is a debug message.[0m [38;5;33m2021-05-01 10:00:00,000 - __main__ - INFO - This is an info message.[0m [38;5;229m2021-05-01 10:00:00,000 - __main__ - WARNING - This is a warning message.[0m [38;5;196m2021-05-01 10:00:00,000 - __main__ - ERROR - This is an error message.[0m [38;5;160m2021-05-01 10:00:00,000 - __main__ - CRITICAL - This is a critical message.[0m
在上面的代码中,我们首先继承了logging.Formatter类,然后覆盖了父类的format方法,用来自定义日志的格式化方式。我们通过设置不同级别的日志输出对应的颜色,然后将消息和颜色进行拼接,最终输出格式化后的日志记录。
然后,我们创建了一个Logger对象并设置日志级别为DEBUG,然后创建一个StreamHandler用于输出到控制台,并设置日志级别为DEBUG。接着,我们创建了一个Terminal256Formatter对象,并将其设置为handler的Formatter。最后,将handler添加到logger实例中。
最后,在maim函数中,我们分别输出了DEBUG、INFO、WARNING、ERROR和CRITICAL级别的日志消息,你会发现它们以不同的颜色进行了区分。
