后端日志管理

小记:
------为什么要写这篇关于后端日志管理?
目前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等。

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

相关推荐
白雪茫茫2 小时前
监督学习、半监督学习、无监督学习算法详解
python·学习·算法·ai
つ安静与叛逆的小籹人2 小时前
小红书API:通过笔记ID获取笔记详情数据教程
笔记·python
05候补工程师3 小时前
[实战复盘] 拒绝 AI 屎山!我从设计模式中学到的“调教”AI 新范式
人工智能·python·设计模式·ai·ai编程
阿豪只会阿巴4 小时前
【没事学点啥】TurboBlog轻量级个人博客项目——项目介绍
javascript·python·django·html
qq_413502026 小时前
如何创建CDB公共用户_C##前缀强制规则与CONTAINER=ALL
jvm·数据库·python
yexuhgu6 小时前
CSS如何利用-checked实现纯CSS手风琴折叠_通过状态选择器控制区域高度
jvm·数据库·python
AC赳赳老秦6 小时前
接口测试自动化:用 OpenClaw 对接 Postman,实现批量回归测试、测试报告自动生成与推送
java·人工智能·python·算法·elasticsearch·deepseek·openclaw
PILIPALAPENG7 小时前
第4周 Day 1:智能体记忆系统——给 Agent 一个"大脑"
前端·人工智能·python
DavidTaozhe7 小时前
一文搞懂外汇接口怎么实时更新美元汇率
大数据·python