49 lines
1.6 KiB
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;
|
|
}
|
|
|
|
|
|
|
|
} |