quansitech/qscmf-http-tracer

qscmf http client trace logger

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/quansitech/qscmf-http-tracer

v1.0.0 2025-11-14 10:01 UTC

This package is auto-updated.

Last update: 2025-11-14 10:02:37 UTC


README

QSCMF HTTP 客户端请求追踪日志包,用于自动记录 HTTP 请求和响应的完整信息。

功能特性

  • ✅ 自动记录 HTTP 请求和响应信息
  • ✅ 支持文件存储和数据库存储
  • ✅ 基于 Guzzle HTTP 客户端中间件
  • ✅ 记录请求耗时和完整数据

安装

composer require quansitech/qscmf-http-tracer

配置

环境变量设置

.env 文件中添加:

# 若使用数据库存储,则
# 存储接口请求日志的数据表名,如 api_requests_log,必填
QSCMF_HTTP_TRACE_LOGGER_TABLE_NAME=api_requests_log

数据库迁移

包会自动注册数据库迁移文件,运行迁移命令:

php artisan migrate

快速开始

使用数据库存储

use Qscmf\HttpTracer\Client\GuzzleClient;
use Qscmf\HttpTracer\Lib\LogWriter\Context;

// 创建日志记录器(数据库存储)
$writer = Context::buildWriter('db');
$logger = new RequestLogger($writer);

// 创建带追踪的 HTTP 客户端
$client = (new GuzzleClient($logger))->create([]);

// 发送 GET 请求
$response = $client->request('GET', 'https://api.example.com/users');

使用文件存储

use Qscmf\HttpTracer\Client\GuzzleClient;
use Qscmf\HttpTracer\Lib\LogWriter\Context;

// 创建日志记录器(文件存储)
$writer = Context::buildWriter('file');
$logger = new RequestLogger($writer);

// 创建带追踪的 HTTP 客户端
$client = (new GuzzleClient($logger))->create([]);

// 发送请求
$response = $client->request('GET', 'https://api.example.com/users');

数据库表结构

包会自动创建 api_requests_log 表(表名可配置),包含以下字段:

字段名 类型 说明
id bigint 主键 ID
trace_id varchar(32) 唯一追踪 ID
method varchar(10) HTTP 方法
url text 请求 URL
request_headers text 请求头(JSON)
request_body text 请求体
response_status_code int 响应状态码
response_headers text 响应头(JSON)
response_body text 响应体
duration_ms float 请求耗时(毫秒)
create_date timestamp 创建时间
update_date timestamp 更新时间

日志记录内容

每个 HTTP 请求都会记录:

  • 请求阶段:方法、URL、请求头、请求体、时间戳
  • 响应阶段:状态码、响应头、响应体、请求耗时
  • 关联信息:通过 trace_id 关联请求和响应

文件存储轮转规则

使用文件存储时,Monolog RotatingFileHandler 的轮转规则:

  • 轮转周期:按天轮转
  • 最大文件数:无限制(默认值 0)
  • 日志路径vendor/quansitech/qscmf-http-tracer/src/logs/

注意:当前配置会无限期保留所有历史日志文件,需要定期手动清理。