Webman中输出请求信息,和数据库链接信息

本人用的是 saiadmin 框架,增加一个中间件,用来输出请求信息。


<?php

declare (strict\_types = 1);

namespace app\\middleware;

use Webman\\MiddlewareInterface;

use Webman\\Http\\Response;

use Webman\\Http\\Request;

class ApiLog implements MiddlewareInterface

{

 /\*\*

 \* 处理请求

 \*

 \* @param Request $request

 \* @param callable $handler

 \* @return Response

 \*/

 public function process(Request $request, callable $handler): Response

 {

 // 获取请求信息

 $method = $request->method();

 $url = $request->url();

 $params = $request->all();

 // 记录请求开始时间

 $startTime = microtime(true);

 // 处理请求

 $response = $handler($request);

 // 计算请求耗时

 $endTime = microtime(true);

 $runtime = round(($endTime - $startTime) \* 1000, 2);

 // 获取状态码

 $statusCode = $response->getStatusCode();

 // 获取返回数据

 $date = date('Y-m-d H:i:s');

 // 美化输出

 $output = "\\n";

 $output .= "┌────────────────────────".$date."───────────────────────────\\n";

 $output .= "│ 状态码: " . $this->getStatusEmoji($statusCode) . " {$statusCode}\\n";

 $output .= "│ 请求方式: {$method}\\n";

 $output .= "│ 接口: {$url}\\n";

 $output .= "│ 耗时: {$runtime}ms\\n";

 // 如果有参数则输出参数

 if (!empty($params)) {

 $output .= "│ 参数: " . json\_encode($params, JSON\_UNESCAPED\_UNICODE | JSON\_PRETTY\_PRINT) . "\\n";

 }

 $output .= $response."\\n";

 $output .= "└────────────────────────────────────────────────────────\\n";

 echo $output;

 return $response;

 }

 /\*\*

 \* 根据状态码返回对应的表情

 \*/

 private function getStatusEmoji(int $code): string

 {

 return match (true) {

 $code >= 500 => '❌',  // 服务器错误

 $code >= 400 => '⚠️',  // 客户端错误

 $code >= 300 => '↪️',  // 重定向

 $code >= 200 => '✅',  // 成功

 default => '❓'        // 其他

 };

 }

}

日志输出

composer require saithink/thinkorm-log

引用地址:

https://www.workerman.net/plugin/168 请查看详细介绍

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部