ホームページ >バックエンド開発 >PHPチュートリアル >Laravelアプリケーションにリクエストコンテキストを追加します

Laravelアプリケーションにリクエストコンテキストを追加します

Robert Michael Kim
Robert Michael Kimオリジナル
2025-03-07 00:24:21811ブラウズ

Adding Request Context in Laravel Applications

Laravelのコンテキストファサードは、リクエストライフサイクル全体に永続的なメタデータを追加できるようにすることにより、アプリケーションの洞察を強化します。このコンテキストは、貴重なデバッグ情報でログを自動的に濃縮します。

以下は、ミドルウェアと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;
    }
}
別の例は、カスタムクラスでコンテキストファサードを使用する方法を示しています:

<?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}");
    }
}
コンテキストファサードは、リクエストのライフサイクル全体で持続する貴重なメタデータを提供することにより、アプリケーションのロギングを豊かにし、デバッグと監視をより効率的にします。

以上がLaravelアプリケーションにリクエストコンテキストを追加しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。