webman_duanju/support/LogMiddleware.php

49 lines
1.6 KiB
PHP

<?php
namespace support;
use Webman\Http\Request;
use Webman\Http\Response;
use Webman\MiddlewareInterface;
class LogMiddleware implements MiddlewareInterface
{
public function process(Request $request, callable $handler): Response
{
// 定义颜色
$green = "\033[32m"; // 标题/分隔
$yellow = "\033[33m"; // 方法/状态码
$blue = "\033[34m"; // URL
$cyan = "\033[36m"; // 参数/头信息
$magenta = "\033[35m"; // Body
$reset = "\033[0m"; // 重置
// 打印请求日志
$requestLog = $green . "====== 请求开始 ======" . $reset . "\n" .
"方法: " . $yellow . $request->method() . $reset . "\n" .
"URL: " . $blue . $request->url() . $reset . "\n" .
"GET参数: " . $cyan . json_encode($request->get(), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . $reset . "\n" .
// "请求头: " . $cyan . json_encode($request->header(), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . $reset . "\n" .
"Body: " . $magenta . $request->rawBody() . $reset;
Log::info($requestLog);
// 处理请求
$response = $handler($request);
// 获取响应内容并截取前200字符
// $bodySnippet = mb_substr($response, 0, 200);
// 打印响应日志
// $responseLog = $green . "====== 请求结束 ======" . $reset . "\n" .
// "URL: " . $blue . $request->url() . $reset . "\n" .
// "Body前200: " . $magenta . $bodySnippet . $reset;
//
// Log::info($responseLog);
return $response;
}
}