|
|
583c33727a
|
Merge pull request 'feat: 实现日志追踪链路' (#185) from feature/log-track into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/185
|
2026-06-21 23:23:22 +08:00 |
|
|
|
239f8f9877
|
docs: 同步限流和鉴权文档的日志实现说明
- 更新限流文档:limiter 内部使用 trace.FromContext 自动记录日志
- 更新鉴权文档:Redis 降级策略使用 trace-aware 日志
- 引用 13-日志追踪.md 作为详细说明
- 移除过时的手动 logger.Log 调用示例
|
2026-06-21 23:19:11 +08:00 |
|
|
|
d430e6e5b2
|
docs: 补充存储层和限流器日志实现说明
添加 PostgreSQL、Redis、限流器三个模块的日志实现文档:
- PostgreSQL 4 个 repository 的日志策略和代码示例
- Redis 会话存储、缓存装饰器、限流器的日志级别选择
- 存储层日志查询示例(数据库错误、Redis 降级)
- 更新架构图,添加存储层节点
|
2026-06-21 23:11:17 +08:00 |
|
|
|
edc66625ba
|
feat: 为 redis_bucket.go 添加限流日志
添加 trace-aware 日志:
- Error: Redis 限流检查失败(fail-open 降级)
- Warn: 限流触发,记录 key 和 retry_after_sec
|
2026-06-21 23:08:00 +08:00 |
|
|
|
9dce107a84
|
feat: 升级 cached_user.go 日志为 trace-aware
替换 logger.Log 为 trace.FromContext(ctx):
- SaveRefreshToken: Redis 缓存写入失败降级日志
- FindRefreshToken: Redis 缓存读取失败降级日志
- DeleteRefreshToken: Redis 缓存删除失败降级日志
- DeleteUserRefreshTokens: Redis 批量删除失败降级日志
|
2026-06-21 23:07:49 +08:00 |
|
|
|
1c7dd708a0
|
feat: 升级 session/redis.go 日志为 trace-aware
替换 logger.Log 为 trace.FromContext(ctx):
- CreateWithID: session 创建日志
- Get: session 获取日志(新增错误日志)
- UpdateConfig: 配置更新日志
- UpdateTitle: 标题更新日志
- GetHistory: 无效历史条目警告日志
- Destroy: session 销毁日志
|
2026-06-21 23:07:02 +08:00 |
|
|
|
d0e4bdaeec
|
feat: 为 PostgreSQL store 层添加 trace 日志
为 4 个 PostgreSQL repository 添加 trace-aware 日志:
- session_pg.go: Save/Find/Update/Delete 操作日志
- user_pg.go: 用户 CRUD 和 refresh token 管理日志
- message_pg.go: 消息存储和查询日志
- user_scenario_repository.go: 自定义情景 CRUD 日志
日志策略:
- Error: 数据库操作失败
- Debug: 操作成功(避免 Info 级别噪音)
- NotFound (ErrNoRows) 不记录错误日志
|
2026-06-21 23:06:50 +08:00 |
|
|
|
55f7f183a7
|
docs: 完善日志追踪文档
|
2026-06-21 22:51:14 +08:00 |
|
|
|
6b4b033df3
|
feat: 日志级别优化(Phase 7)
- nodes_stt.go: STT 识别开始降为 Debug
- nodes_history.go: 历史组装完成降为 Debug
- nodes_tts.go: TTS 流中断降为 Debug
- 保持关键里程碑为 Info:query completed、tts synthesis started/completed
- 中间步骤详情降为 Debug,减少生产环境日志噪音
|
2026-06-21 22:37:23 +08:00 |
|
|
|
76d331c885
|
feat: Eino nodes 迁移到 trace 包(Phase 6.2)
- nodes_stt.go 使用 trace.FromContext 替换 logger.Log
- nodes_history.go 使用 trace.FromContext
- nodes_tts.go 使用 trace.FromContext
- nodes_done.go 使用 trace.FromContext
- 移除所有 nodes 中的 request_id 手动字段(自动附加)
- 所有日志消息改为英文
|
2026-06-21 22:36:15 +08:00 |
|
|
|
ad700743ef
|
feat: Eino adapter 和 callback 迁移到 trace 包(Phase 6.1)
- 移除 adapter.go 中的 ctxKeySessionID 定义
- 移除 callback.go 中的 ctxKeyRequestID 定义
- 统一使用 trace.WithSessionID/WithRequestID
- adapter.go 使用 trace.FromContext 替换 logger.Log
- callback.go 使用 trace.FromContext
- 移除双重日志,SetActiveRequest 失败直接返回错误
- 更新测试文件导入 trace 包
|
2026-06-21 22:33:49 +08:00 |
|
|
|
6ab4776e08
|
feat: WebSocket 追踪集成(Phase 5)
- 在 WebSocket 升级后生成连接级 trace_id
- 为每个 query 注入 request_id 到 context
- 使用 trace.FromContext 替换所有 logger.Log
- trace_id 贯穿整个 WebSocket 生命周期
- 自动附加 trace_id/session_id/request_id 到所有日志
|
2026-06-21 22:31:45 +08:00 |
|
|
|
c17798ec67
|
feat: 添加 HTTP 请求日志中间件(Phase 4)
实现内容:
- 创建 trace/gin_logger.go,实现 GinLogger 和 GinRecovery 中间件
- GinLogger 自动记录所有 HTTP 请求的 method/path/status/latency/client_ip
- GinRecovery 使用 zap 记录 panic 恢复信息,替代 gin.Recovery()
- 修改 main.go 注册三层中间件:TraceMiddleware -> GinLogger -> GinRecovery
- 所有日志自动附加 trace_id 和 request_id 字段
日志示例:
{
"level": "info",
"ts": "2026-06-21T22:26:07.610+0800",
"msg": "request completed",
"trace_id": "01KVN964KSY6BFDKB9S932NXB8",
"request_id": "01KVN964KSY6BFDKB9S932NXB8",
"method": "GET",
"path": "/api/health",
"status": 200,
"latency_ms": 0,
"client_ip": "::1"
}
测试:已验证健康检查接口日志正常输出
|
2026-06-21 22:26:43 +08:00 |
|
|
|
8a43f4406a
|
feat: 添加限流触发日志
|
2026-06-21 22:16:38 +08:00 |
|
|
|
065673fae2
|
feat: 添加会话接口日志(创建/销毁)
|
2026-06-21 22:15:53 +08:00 |
|
|
|
03c27e7790
|
feat: 添加对话接口错误日志(CRUD 操作)
|
2026-06-21 22:14:41 +08:00 |
|
|
|
0a59173476
|
feat: 添加 JWT 鉴权拒绝日志
|
2026-06-21 22:13:15 +08:00 |
|
|
|
939e43acd0
|
feat: 添加认证接口日志(登录/注册/刷新/登出)
|
2026-06-21 22:12:21 +08:00 |
|
|
|
87c3e7a8dd
|
refactor: OpenAI TTS 使用 trace.FromContext 支持追踪
|
2026-06-21 22:08:27 +08:00 |
|
|
|
d6e9555a97
|
refactor: MiMo TTS 使用 trace.FromContext 支持追踪
|
2026-06-21 22:08:00 +08:00 |
|
|
|
9c763ec12a
|
feat: Redis 会话历史解析错误日志截断保护
|
2026-06-21 22:06:10 +08:00 |
|
|
|
1bab02ae84
|
feat: OpenAI TTS 错误日志截断敏感文本
|
2026-06-21 22:05:35 +08:00 |
|
|
|
89d7b7c17c
|
feat: MiMo TTS 错误日志截断敏感文本
|
2026-06-21 22:05:13 +08:00 |
|
|
|
34d498510e
|
feat: STT 敏感文本降级为 Debug 并截断保护
|
2026-06-21 22:04:50 +08:00 |
|
|
|
104b28efd3
|
feat: 实现字符串截断工具函数用于敏感内容保护
|
2026-06-21 22:02:08 +08:00 |
|
|
|
a02a8bc374
|
feat: 实现 Gin trace 中间件生成并注入 trace ID
|
2026-06-21 22:01:50 +08:00 |
|
|
|
0d99d06f06
|
test: 验证 Eino Graph 正确传递 context.Value
|
2026-06-21 22:01:27 +08:00 |
|
|
|
8b18953010
|
feat: 实现 context-aware logger 自动附加 trace 字段
|
2026-06-21 22:00:32 +08:00 |
|
|
|
0108ef2064
|
feat: 实现 trace context 注入与提取功能
|
2026-06-21 22:00:12 +08:00 |
|
|
|
e0dc8272a5
|
feat: 实现并发安全的 ULID trace ID 生成器
|
2026-06-21 21:59:43 +08:00 |
|
|
|
11c3955bd6
|
feat: 添加 ULID 依赖用于 trace ID 生成
|
2026-06-21 21:59:16 +08:00 |
|