Flask/FastAPI 中 logging.basicConfig() 不生效是因为框架启动时已配置 root loggerbasicConfig() 仅在未配置时生效应提前显式配置 logger 或使用框架推荐方式。logging.basicConfig() 为什么在 Flask/FastAPI 里不生效因为 Web 框架启动后会自动配置 root loggerbasicConfig() 只在 logger 未被配置时才生效——它被框架抢跑了。实操建议立即学习“Python免费学习笔记深入”不要依赖 basicConfig()改用 logging.getLogger() 显式获取并配置 logger在框架初始化前就完成日志器配置比如在 app.py 最顶部 import 后立即 setupFlask 中推荐用 app.loggerFastAPI 则应通过 logging.getLogger(uvicorn.access) 和 logging.getLogger(uvicorn.error) 分别接管如何给每条日志打上 request_id 实现分布式追踪单纯靠 %(asctime)s 或 %(levelname)s 不足以串联一次跨服务请求。必须把上下文 ID 注入 logging 的 LogRecord。实操建议立即学习“Python免费学习笔记深入”用 logging.Filter 子类在 filter() 方法中从当前线程/协程上下文中提取 request_id如 Flask 的 g.request_id或 FastAPI 的 request.state.request_id把 request_id 注入到 record.request_id 属性再在 Formatter 的 format 字符串里加 %(request_id)s注意异步场景下不能用 threading.local得换 contextvars.ContextVarPython 3.7示例关键片段request_id_var ContextVar(request_id, defaultN/A)brclass RequestIdFilter(logging.Filter):br def filter(self, record):br record.request_id request_id_var.get()br return TrueJSON 格式日志怎么输出又不影响本地调试线上需要结构化日志方便 ELK / Loki 解析但开发时看 JSON 是反人类的——关键是不能让两种模式互相污染。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能