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 请查看详细介绍
  • 海报
  • 分享
海报图正在生成中...
分享到...

Leave a Reply

Your email address will not be published. Required fields are marked *