如何让PyCharm Python控制台中coloredlogs格式正确显示?
解决Python日志既从0列起始又带颜色显示的问题
你当前的日志配置存在重复添加处理器的问题:同时调用coloredlogs.install()和logging.basicConfig()会让根日志器拥有两个输出处理器,导致出现颜色异常或行首不对齐的冲突。
修正方案(最简版)
直接用coloredlogs.install()完成所有配置,无需额外调用logging.basicConfig():
import coloredlogs import logging import sys coloredlogs.install( level='DEBUG', fmt='%(asctime)s %(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M:%S', stream=sys.stdout )
原理说明
coloredlogs.install()本身支持通过fmt、datefmt参数自定义日志格式,完全覆盖logging.basicConfig()的格式化能力- 重复配置会导致两个处理器同时输出:一个强制红色无对齐,另一个颜色正常但换行逻辑异常,最终出现你遇到的矛盾现象
- 单处理器配置下,每条日志都会以完整的换行+格式输出,自然从0列起始,同时保留颜色高亮
进阶控制(自定义Logger)
如果不想修改根日志器,只想给特定Logger配置:
import coloredlogs import logging import sys # 创建自定义Logger logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # 移除根日志器的默认处理器,避免干扰 for handler in logging.root.handlers[:]: logging.root.removeHandler(handler) # 配置带颜色的处理器和格式 handler = coloredlogs.ColoredStreamHandler(stream=sys.stdout) formatter = logging.Formatter( '%(asctime)s %(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) handler.setFormatter(formatter) logger.addHandler(handler)
内容的提问来源于stack exchange,提问作者toddmo
相关产品推荐
相关产品推荐

