You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:15:57