一、功能概述
HTTP请求日志模块用于记录系统与外部服务的HTTP接口交互信息,通过auth_http_log
(实时日志表)和auth_http_log_history
(历史日志表)实现全量请求追踪。模块支持按时间范围、项目、状态等多维度查询,区分最新日志与历史日志,为外部接口调用的问题排查、性能分析和安全审计提供数据支持。
二、核心功能说明
(一)HTTP请求日志分页查询
- 操作路径:系统管理 → HTTP请求日志 → 列表查询
- 查询逻辑:
- 通过
level
参数区分查询范围:level=NEWEST_JOURNAL
(最新日志):查询auth_http_log
表- 其他值(历史日志):查询
auth_http_log_history
表
- 支持跨表统一返回格式(通过
KPJsonUtil
将历史表数据转换为HttpLogPO
)
- 通过
- 查询参数(通过
HttpLogListParamPO
传递):参数名 关联字段 说明 projectName
project_name
项目名称,精确匹配 uri
uri
请求路径,模糊匹配 name
name
接口名称,精确匹配 parameters
parameters
请求参数,模糊匹配 result
result
响应结果,模糊匹配 clinetIp
clinet_ip
客户端IP,精确匹配 identification
identification
操作人/项目ID,精确匹配 identificationName
identification_name
操作人姓名/项目名称,精确匹配 phone
phone
操作人手机号,模糊匹配 serial
serial
操作人工号,精确匹配 status
status
状态(200成功/500失败),精确匹配 message
message
响应信息,模糊匹配 callTime
call_time
调用日期,按天筛选(自动匹配当天起止时间) - 分页与排序:
- 分页:通过
pageNum
(页码)和pageSize
(每页条数)控制 - 排序:支持按任意字段排序(通过
orderBy
参数指定,如call_time DESC
)
- 分页:通过
- 返回结果:符合条件的日志列表,包含请求基本信息、参数、结果、耗时等完整字段
(二)HTTP请求日志详情查询
- 操作路径:HTTP请求日志列表点击目标记录「详情」按钮
- 查询参数:日志主键(
uuid
,必填) - 查询逻辑:
- 优先从
auth_http_log
表查询 - 若未查询到结果,自动从
auth_http_log_history
表查询(隐含逻辑,需结合业务实现)
- 优先从
- 返回内容:
- 基础信息:项目名称、请求URL/URI、接口名称、请求方式(
method
) - 交互数据:入参(
parameters
)、出参(result
) - 性能数据:处理时间(
dispose_time
,毫秒)、时间说明(dispose_time_explain
) - 时间信息:调用时间(
call_time
)、创建时间(create_date
) - 来源信息:客户端IP(
clinet_ip
)、来源平台(plat_form
) - 操作人信息:ID(
identification
)、姓名(identification_name
)、手机号(phone
)、工号(serial
) - 状态信息:请求状态(
status
)、响应信息(message
)
- 基础信息:项目名称、请求URL/URI、接口名称、请求方式(
三、核心数据表说明
(一)实时HTTP请求日志表(auth_http_log
)
字段名 | 类型 | 说明 | 索引 |
---|---|---|---|
uuid | varchar(32) | 主键,32位唯一标识 | 主键索引 |
project_name | varchar(128) | 调用方项目名称 | 普通索引 |
url | varchar(400) | 完整请求URL(含域名) | 普通索引 |
uri | varchar(400) | 请求相对路径(不含域名) | - |
name | varchar(128) | 接口名称/标识 | 普通索引 |
method | varchar(20) | HTTP请求方式(GET/POST/PUT等) | 普通索引 |
parameters | text | 请求参数(JSON格式) | - |
result | text | 响应结果(JSON格式) | - |
dispose_time | bigint | 处理耗时(毫秒) | - |
dispose_time_explain | varchar(128) | 耗时说明(如“正常”“超时”) | - |
clinet_ip | varchar(128) | 客户端IP地址 | 普通索引 |
call_time | datetime | 接口调用时间 | 普通索引 |
status | int | 请求状态(200成功/500失败) | 普通索引 |
message | varchar(1000) | 响应信息(失败时为错误详情) | - |
(二)历史HTTP请求日志表(auth_http_log_history
)
- 与实时表的关系:结构完全一致,用于存储过期的日志数据
- 数据迁移规则:通常按时间迁移(如超过7天的日志从
auth_http_log
迁移至此表) - 作用:减轻实时表的数据量,提升查询性能
四、日志生命周期管理
- 日志生成:外部接口被调用时自动记录,实时写入
auth_http_log
- 数据迁移:通过定时任务(如每日凌晨)将
auth_http_log
中超过7天的记录迁移至auth_http_log_history
- 历史清理:
auth_http_log_history
中超过90天的记录可根据业务需求进行归档或删除 - 查询路由:通过
level
参数自动路由至实时表或历史表,保证查询便捷性
五、应用场景说明
- 外部接口问题排查:
- 通过
parameters
和result
对比分析请求参数与响应结果的匹配性 - 结合
status
和message
定位失败原因(如“参数格式错误”“权限不足”)
- 通过
- 性能优化:
- 筛选
dispose_time
较大的记录,识别性能瓶颈接口 - 按
project_name
统计平均耗时,对比不同项目的接口性能
- 筛选
- 安全审计:
- 追踪异常IP(
clinet_ip
)的请求频率和内容 - 检查敏感操作(如批量数据修改)的调用记录,确保合规性
- 追踪异常IP(
- 接口依赖分析:
- 统计各
project_name
的调用次数,梳理系统与外部项目的依赖关系 - 分析
uri
的调用分布,识别核心接口和冗余接口
- 统计各
六、性能优化说明
- 分表存储:通过实时表与历史表分离,减少单表数据量,提升查询效率
- 索引优化:对高频查询字段(
project_name
、name
、call_time
、status
)建立索引 - 分页查询:使用
PageHelper
实现物理分页,避免全表扫描 - 字段类型适配:大文本字段(
parameters
、result
)采用text
类型,平衡存储与查询效率 - 跨表转换:通过
KPJsonUtil
统一返回格式,简化前端处理逻辑