后端日志管理

小记:
------为什么要写这篇关于后端日志管理?
目前AI编程确实很厉害,但是AI写的代码,我们如何纠错,如何定位问题也是一件头疼的事情。把项目部署的服务器上了,但是运行时候报错,找不到原因。太烦人了。

企业级项目里,日志一般要记什么?

一个设计良好的日志系统,核心是记录 "谁、什么时候、做了什么、结果如何" ,并为每个请求标记一个唯一ID,把分散的日志串成一条线

请求维度的「可串联」信息(排障第一优先级)

  • Request ID / Trace ID:全链路唯一,响应头带回给前端。
  • 用户/租户标识:在合规前提下记业务 user id、租户 id(注意脱敏与权限)。
  • 接口:方法 + 路径(或路由名),必要时含 query 摘要(避免把密钥、整段 body 打进日志)。
  • 结果:HTTP 状态码、业务错误码;耗时(latency)。
  • 上下游:调了哪个外部服务(向量库、LLM)、是否重试、超时设置。

业务与审计(合规、运营、安全)

  • 关键业务动作:创建/删除资源、支付、权限变更等(谁、何时、对什么对象、结果)。
  • 安全相关:登录失败次数、可疑 IP、鉴权失败(不要打明文 token/密码)。
  • 异步任务:task_id、队列名、阶段、成功/失败原因(与 HTTP 请求用同一 trace id 关联)。

错误与诊断

  • 异常:带 stack trace(logger.exception),且带上 request_id。
  • 降级与熔断:例如向量检索失败回退、限流触发,便于区分「正常慢」和「故障路径」。

环境与部署

  • 服务名、实例 id、版本/commit、环境(prod/staging),便于多副本、多版本混跑时定位。

体量与隐私

  • 采样(高 QPS 接口可只抽一部分打 DEBUG)。
  • 脱敏:手机号、证件、token、完整 prompt/文档内容往往不进日志或只打 hash/长度。

记日志的方法

方式 记什么 典型用途
Access log(访问日志) 每个 HTTP 请求一行:时间、IP、方法、URL、状态码、字节数、耗时 流量分析、404/5xx 统计、按路径查问题
应用结构化日志 JSON 一行一条:level, time, service, trace_id, msg, extra 用 ELK、Loki、Datadog 等检索、告警
中间件 / 过滤器 请求进入打「开始」、离开打「结束+耗时+状态」;统一注入 trace id 不用每个接口手写
OpenTelemetry(Tracing) Span:服务间调用树、耗时分解 微服务、外部依赖多时用
集中式日志平台 把各机/各容器的日志/agent 送到统一存储 搜索、仪表盘、告警
日志级别策略 prod 多为 INFO+,DEBUG 只在排障窗口打开 控成本、控磁盘与隐私风险
业务审计日志 与「调试日志」分开存储/保留周期 合规与运营报表

创建一个中间件。对于每个请求,它都会:

  • 生成/提取 RequestID:如果没有则生成一个 UUID 供全链路使用,这是串起所有日志的关键。

  • 自动记录请求信息:处理前记录下请求的方法、路径、客户端IP等。

  • 记录响应和耗时:处理后计算耗时,并记录响应状态码

相关推荐
金銀銅鐵6 分钟前
[Python] 从《千字文》中随机挑选汉字
后端·python
cup115 小时前
[技术复盘] Windows Python 打包实战:Nuitka 环境踩坑总结与 CI 自动化构建全指南
python·ai·环境变量·ci·nuitka·skill
aqi007 小时前
15天学会AI应用开发(七)有了大模型为什么还要引入RAG
人工智能·python·大模型·ai编程·ai应用
金銀銅鐵9 小时前
用 Python 实现 Take-Away 游戏
python·游戏
copyer_xyf9 小时前
Agent 流程编排
后端·python·agent
copyer_xyf10 小时前
Agent RAG
后端·python·agent
copyer_xyf10 小时前
【RAG】向量数据库:milvus
后端·python·agent
copyer_xyf10 小时前
Agent 记忆管理
后端·python·agent
CaffeinePro1 天前
Pydantic深度使用:数据校验、枚举、ORM映射
后端·fastapi