# 报错日志收集(log_message) ## 项目规划 - 目标:新增 `log_message` 表与采集/查询接口,用于 APP / PC / Web 客户端错误日志收集与分析。 - 范围: - 创建 MySQL 表与迁移脚本(02105)。 - 新增客户端上报接口 `POST /v1/common/log/message/report`。 - 新增管理端查询接口 `GET /v1/admin/log/message/error/list` 与 `GET /v1/admin/log/message/error/detail`。 ## 实施方案 - 表结构:见 `initialize/migrate/database/02120_log_message.up.sql`。 - 模型:`internal/model/logmessage/`(实体、默认 CRUD、筛选)。 - 路由:在 `internal/handler/routes.go` 注册公共与管理端路由。 - 逻辑: - 上报逻辑:`internal/logic/common/logMessageReportLogic.go`(限流、指纹去重、入库)。 - 管理查询:`internal/logic/admin/log/getErrorLogMessageListLogic.go`、`getErrorLogMessageDetailLogic.go`。 - 类型:`internal/types/types.go` 新增请求/响应结构。 ## 进度记录 - 2025-12-02: - 完成表与索引创建迁移文件。 - 完成模型与服务注入。 - 完成公共上报接口与限流、去重逻辑;编译验证通过。 - 完成管理端列表与详情接口;编译验证通过。 - 待办:根据运营需求调整限流阈值与日志保留策略。 ## 接口规范 - 上报:`POST /v1/common/log/message/report` - 请求:platform、appVersion、osName、osVersion、deviceId、level、errorCode、message、stack、context、occurredAt - 响应:`{ code, msg, data: { id } }` - 管理端列表:`GET /v1/admin/log/message/error/list` - 筛选:platform、level、user_id、device_id、error_code、keyword、start、end;分页:page、size - 响应:`{ total, list }` - 管理端详情:`GET /v1/admin/log/message/error/detail?id=...` - 响应:完整字段 ## 保留策略与安全 - 限流:按设备/IP 每分钟 120 条(可配置)。 - 隐私:避免采集敏感数据;服务端对大字段做长度限制与截断。