一、功能概述

HTTP请求日志模块用于记录系统与外部服务的HTTP接口交互信息,通过auth_http_log(实时日志表)和auth_http_log_history(历史日志表)实现全量请求追踪。模块支持按时间范围、项目、状态等多维度查询,区分最新日志与历史日志,为外部接口调用的问题排查、性能分析和安全审计提供数据支持。

二、核心功能说明

(一)HTTP请求日志分页查询

  1. 操作路径:系统管理 → HTTP请求日志 → 列表查询
  2. 查询逻辑
    • 通过level参数区分查询范围:
      • level=NEWEST_JOURNAL(最新日志):查询auth_http_log
      • 其他值(历史日志):查询auth_http_log_history
    • 支持跨表统一返回格式(通过KPJsonUtil将历史表数据转换为HttpLogPO
  3. 查询参数(通过HttpLogListParamPO传递):
    参数名关联字段说明
    projectNameproject_name项目名称,精确匹配
    uriuri请求路径,模糊匹配
    namename接口名称,精确匹配
    parametersparameters请求参数,模糊匹配
    resultresult响应结果,模糊匹配
    clinetIpclinet_ip客户端IP,精确匹配
    identificationidentification操作人/项目ID,精确匹配
    identificationNameidentification_name操作人姓名/项目名称,精确匹配
    phonephone操作人手机号,模糊匹配
    serialserial操作人工号,精确匹配
    statusstatus状态(200成功/500失败),精确匹配
    messagemessage响应信息,模糊匹配
    callTimecall_time调用日期,按天筛选(自动匹配当天起止时间)
  4. 分页与排序
    • 分页:通过pageNum(页码)和pageSize(每页条数)控制
    • 排序:支持按任意字段排序(通过orderBy参数指定,如call_time DESC
  5. 返回结果:符合条件的日志列表,包含请求基本信息、参数、结果、耗时等完整字段

(二)HTTP请求日志详情查询

  1. 操作路径:HTTP请求日志列表点击目标记录「详情」按钮
  2. 查询参数:日志主键(uuid,必填)
  3. 查询逻辑
    • 优先从auth_http_log表查询
    • 若未查询到结果,自动从auth_http_log_history表查询(隐含逻辑,需结合业务实现)
  4. 返回内容
    • 基础信息:项目名称、请求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

三、核心数据表说明

(一)实时HTTP请求日志表(auth_http_log

字段名类型说明索引
uuidvarchar(32)主键,32位唯一标识主键索引
project_namevarchar(128)调用方项目名称普通索引
urlvarchar(400)完整请求URL(含域名)普通索引
urivarchar(400)请求相对路径(不含域名)-
namevarchar(128)接口名称/标识普通索引
methodvarchar(20)HTTP请求方式(GET/POST/PUT等)普通索引
parameterstext请求参数(JSON格式)-
resulttext响应结果(JSON格式)-
dispose_timebigint处理耗时(毫秒)-
dispose_time_explainvarchar(128)耗时说明(如“正常”“超时”)-
clinet_ipvarchar(128)客户端IP地址普通索引
call_timedatetime接口调用时间普通索引
statusint请求状态(200成功/500失败)普通索引
messagevarchar(1000)响应信息(失败时为错误详情)-

(二)历史HTTP请求日志表(auth_http_log_history

  • 与实时表的关系:结构完全一致,用于存储过期的日志数据
  • 数据迁移规则:通常按时间迁移(如超过7天的日志从auth_http_log迁移至此表)
  • 作用:减轻实时表的数据量,提升查询性能

四、日志生命周期管理

  1. 日志生成:外部接口被调用时自动记录,实时写入auth_http_log
  2. 数据迁移:通过定时任务(如每日凌晨)将auth_http_log中超过7天的记录迁移至auth_http_log_history
  3. 历史清理auth_http_log_history中超过90天的记录可根据业务需求进行归档或删除
  4. 查询路由:通过level参数自动路由至实时表或历史表,保证查询便捷性

五、应用场景说明

  1. 外部接口问题排查
    • 通过parametersresult对比分析请求参数与响应结果的匹配性
    • 结合statusmessage定位失败原因(如“参数格式错误”“权限不足”)
  2. 性能优化
    • 筛选dispose_time较大的记录,识别性能瓶颈接口
    • project_name统计平均耗时,对比不同项目的接口性能
  3. 安全审计
    • 追踪异常IP(clinet_ip)的请求频率和内容
    • 检查敏感操作(如批量数据修改)的调用记录,确保合规性
  4. 接口依赖分析
    • 统计各project_name的调用次数,梳理系统与外部项目的依赖关系
    • 分析uri的调用分布,识别核心接口和冗余接口

六、性能优化说明

  1. 分表存储:通过实时表与历史表分离,减少单表数据量,提升查询效率
  2. 索引优化:对高频查询字段(project_namenamecall_timestatus)建立索引
  3. 分页查询:使用PageHelper实现物理分页,避免全表扫描
  4. 字段类型适配:大文本字段(parametersresult)采用text类型,平衡存储与查询效率
  5. 跨表转换:通过KPJsonUtil统一返回格式,简化前端处理逻辑