La façade du contexte de Laravel améliore les informations d'application en vous permettant d'ajouter des métadonnées persistantes tout au long du cycle de vie de la demande. Ce contexte enrichit automatiquement vos journaux avec de précieuses informations de débogage.
Ce qui suit est un exemple pratique de l'utilisation du contexte de la demande dans la journalisation des demandes de middleware et 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; } }
Un autre exemple montre comment utiliser la façade de contexte dans une classe personnalisée:
<?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}"); } }
La façade de contexte enrichit l'exploitation de la divagation de l'application en fournissant des métadonnées précieuses qui persistent tout au long du cycle de vie de la demande, rendant le débogage et la surveillance plus efficaces.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!