首頁 > 後端開發 > php教程 > 在Laravel應用程序中添加請求上下文

在Laravel應用程序中添加請求上下文

Robert Michael Kim
發布: 2025-03-07 00:24:21
原創
805 人瀏覽過

Adding Request Context in Laravel Applications

Laravel 的 Context facade 通過允許您在整個請求生命週期中添加持久性元數據來增強應用程序的洞察力。此上下文會自動使用有價值的調試信息豐富您的日誌。

以下是一個在中間件和 API 請求日誌記錄中使用請求上下文的實用示例:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Context;
use Illuminate\Support\Str;

class ApiRequestLogger
{
    public function handle(Request $request, Closure $next)
    {
        // 添加基本的请求上下文
        Context::add('request_id', Str::uuid()->toString());
        Context::add('path', $request->path());
        Context::add('method', $request->method());
        // 如果已认证,则添加用户上下文
        if ($request->user()) {
            Context::add('user_id', $request->user()->id);
            Context::add('api_key', $request->user()->api_key);
        }
        // 添加性能指标
        $startTime = microtime(true);

        $response = $next($request);
        Context::add('response_time', round((microtime(true) - $startTime) * 1000, 2));
        Context::add('status_code', $response->getStatusCode());
        // 记录 API 请求
        Log::info('API request processed');

        return $response;
    }
}
登入後複製

另一個例子展示如何在自定義類中使用Context Facade:

<?php

use Illuminate\Support\Facades\Context;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;

class RequestContext
{
    public function __construct()
    {
        Context::add('request_id', Str::uuid()->toString());
    }

    public function addUserContext()
    {
        if (Auth::check()) {
            Context::add('user_id', Auth::id());
            Context::add('user_type', Auth::user()->type);
        }
    }

    public function logAction(string $action)
    {
        Log::info("User performed {$action}");
    }
}
登入後複製

Context facade 通過提供在整個請求生命週期中持續存在的寶貴元數據來豐富應用程序的日誌記錄,從而使調試和監控更加有效。

以上是在Laravel應用程序中添加請求上下文的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板