如何让VS Code调试控制台按Python日志级别显示对应颜色?
解决VS Code调试控制台Python日志颜色不匹配问题
问题原因
Python的logging模块默认将所有日志输出到stderr流,而VS Code调试控制台会把stderr中的内容统一识别为错误级别,因此无论你的日志实际级别是info还是warning,都会套用debugConsole.errorForeground的颜色,导致显示不符合预期。
解决方案
1. 手动配置Logging流与格式
通过为不同日志级别指定输出流,并添加明确的级别标识,让VS Code能正确识别日志级别:
修改你的测试代码如下:
import logging import sys # 初始化日志器 _logger = logging.getLogger(__name__) _logger.setLevel(logging.DEBUG) _logger.handlers.clear() # 清除默认handler,避免重复输出 # 创建stdout处理器,处理INFO及以下级别日志 stdout_handler = logging.StreamHandler(sys.stdout) stdout_handler.setLevel(logging.INFO) # 创建stderr处理器,处理WARNING及以上级别日志 stderr_handler = logging.StreamHandler(sys.stderr) stderr_handler.setLevel(logging.WARNING) # 设置日志格式,必须包含%(levelname)s,VS Code依赖此字段识别级别 formatter = logging.Formatter('%(levelname)s: %(message)s') stdout_handler.setFormatter(formatter) stderr_handler.setFormatter(formatter) # 添加处理器到日志器 _logger.addHandler(stdout_handler) _logger.addHandler(stderr_handler) if __name__ == "__main__": _logger.info('Test info') _logger.warning('Test warning') _logger.error('Test error')
2. 启用VS Code Python扩展的日志自动识别功能
在VS Code的settings.json中添加以下配置,让Python扩展自动解析日志级别:
"python.logging.enabled": true, "python.logging.promptToConfigure": false
确保你的launch.json中console字段保持为internalConsole(你当前的配置已满足),扩展会自动识别日志输出中的级别标识,并对应到你设置的debugConsole颜色。
3. 验证颜色配置
确认你的settings.json中的颜色设置正确(你当前的配置没问题):
"debugConsole.infoForeground": "#ffffff", "debugConsole.warningForeground": "#fddf00", "debugConsole.errorForeground": "#69ba63", "debugConsole.sourceForeground": "#c2c900"
完成以上配置后,重新启动调试,日志就会按对应级别显示颜色了。
内容的提问来源于stack exchange,提问作者user14835930
相关产品推荐
相关产品推荐

