refactor(middleware): 精简请求日志 — 采用社区标准分层策略

- 移除 Request Body 记录(交由 Controller 层以结构化参数形式记录)
- 移除正常响应 Body 的 DEBUG 记录(减少日志量)
- 保留 HTTP 元信息:method/path/handler/status/latency/ip/query
- 保留错误响应(4xx/5xx)的 Response Body 记录
- 导出 IsSensitivePath 供 Controller 层调用
- 重写架构文档 8.6 节:分层日志架构表、字段说明、分级策略
- 更新 phase1 实施计划中间件描述

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-02-28 16:10:07 +08:00
parent a6ef49a3e0
commit 4d3d486902
3 changed files with 93 additions and 139 deletions

View File

@@ -251,15 +251,13 @@ type Response struct {
- 注入 context后续所有日志自动携带 trace_id
- 在响应头中返回 `X-Request-ID`
创建 `pkg/middleware/logger.go`**请求日志中间件**
- 记录每个请求的完整信息方法、路径、状态码、耗时、IP、User-Agent
- **请求参数记录**Query 参数 + Request Body 在 INFO 级别始终记录(所有环境生效)
- 文件上传自动跳过,仅标记 `[file upload]`
- 敏感路径(登录/注册/改密码)自动脱敏 password 字段
- Body 超过 4KB 自动截断
- **响应数据记录**:正常响应 DEBUG 级别记录,错误响应(4xx/5xx)在 WARN/ERROR 也记录
- 响应 Body 最大记录 2KB
- 自动携带 trace_id
创建 `pkg/middleware/logger.go`**请求日志中间件Access Log 层)**
- 采用社区标准「分层不重复」策略,只记录 HTTP 请求级元信息
- 记录字段method / path / handler / status / latency / ip / user_agent / query
- **不记录 Request Body**(由 Controller 层在 ShouldBindJSON 后以结构化参数形式记录caller 可精确指向业务代码行号)
- 错误响应(4xx/5xx)额外记录 Response Body最大 2KB便于排查接口返回内容
- handler 字段通过 `c.HandlerName()` 获取,显示实际处理请求的函数名
- 自动携带 trace_id通过 trace_id 串联同一请求的各层日志
- 状态码分级5xx→ERROR / 4xx→WARN / 慢请求(>500ms)→WARN / 正常→INFO
创建 `pkg/middleware/cors.go` — CORS 跨域中间件。