如何在Python logging的levelname后添加冒号再进行填充?
修改日志格式实现级别后带冒号的输出
直接修改日志格式字符串即可实现需求,以下是两种方案:
基础方案(适配固定长度级别)
把原格式中的%(levelname)-9s替换为%(levelname)s: ,让级别名称后紧跟冒号,再补充4个空格(总长度和原格式一致,保证消息对齐):
import logging logging.basicConfig( level=logging.INFO, format="%(levelname)s: %(message)s [%(name)s]", ) logger = logging.getLogger() logger.info("Application shutdown complete.")
执行后输出:
INFO: Application shutdown complete. [root]
通用方案(适配任意长度级别)
如果需要兼容不同长度的日志级别(比如ERROR是5个字符),保证级别部分总宽度一致,可以自定义Formatter类:
import logging class LevelColonFormatter(logging.Formatter): def format(self, record): # 将级别名称加冒号后左对齐,总宽度固定为9个字符 level_part = f"{record.levelname}:".ljust(9) return f"{level_part} {record.message} [{record.name}]" logging.basicConfig(level=logging.INFO) logger = logging.getLogger() # 移除默认控制台处理器 for handler in logger.handlers[:]: logger.removeHandler(handler) # 添加自定义格式的处理器 console_handler = logging.StreamHandler() console_handler.setFormatter(LevelColonFormatter()) logger.addHandler(console_handler) logger.info("Application shutdown complete.") logger.error("Test error message.")
执行后输出:
INFO: Application shutdown complete. [root] ERROR: Test error message. [root]
内容的提问来源于stack exchange,提问作者duplxey
相关产品推荐
相关产品推荐

