ホームページ  >  記事  >  PHPフレームワーク  >  ミドルウェアを使用してユーザーリクエストログを記録するlaravelの詳細な例

ミドルウェアを使用してユーザーリクエストログを記録するlaravelの詳細な例

WBOY
WBOY転載
2022-04-26 11:53:013929ブラウズ

この記事では、laravel に関する関連知識を提供します。主に、ミドルウェアの作成、ミドルウェアの登録、ユーザー アクセスやその他のコンテンツの記録など、ミドルウェアを使用してユーザー リクエスト ログを記録することに関する関連問題を紹介します。以下をご覧ください。皆様のお役に立てれば幸いです。

ミドルウェアを使用してユーザーリクエストログを記録するlaravelの詳細な例

#[関連する推奨事項:

laravel ビデオ チュートリアル]

1. ミドルウェアの作成

    コマンドを使用して作成することも、直接作成することもできます
php artisan make:middleware 中间件名称(TraceRecordMiddleware)

2. 登録ミドルウェア

    理由は異なります。 laravel のバージョンが登録されている 中間価格の設定方法が異なる ここではバージョン 5.6 を例にします
  • 次のコードをプロジェクト
  • bootstarp/app.php に直接追加します
  • #
$app->middleware([
     App\Http\Middleware\TraceRecordMiddleware::class
 ]);

3. ユーザー アクセス ログを記録する

#実際、中間価格はリクエスト インターセプタとして理解できます
    #したがって、ユーザーのリクエスト前のデータとユーザーのリクエスト後の応答データをインターセプトします。
  • 以下に基づく中間価格テンプレート
  • #
    <?php
    
    namespace App\Http\Middleware;
    
    use Illuminate\Http\Request;
    
    /**
     * Class TraceRecordMiddleware
     * @package App\Http\Middleware
     */
    class TraceRecordMiddleware
    {
        public function handle(Request $request, \Closure $next)
        {
            $response = $next($request);
    
            return $response;
        }
    }
  • 4. ユーザーの応答の前にデータを記録します
ユーザーが訪れたルートを記録するだけでよく、システムがどのようなデータを返すかは問題ではありません

#
<?php

namespace App\Http\Middleware;

use App\Model\SystemTraceRecord;
use Illuminate\Http\Request;

/**
 * Class TraceRecordMiddleware
 * @package App\Http\Middleware
 */
class TraceRecordMiddleware
{
    public function handle(Request $request, \Closure $next)
    {
        
        //插入数据库日志表
        SystemTraceRecord::create([
            &#39;method&#39; => $request->getMethod(),
            'secure' => $request->getScheme(),
            'uri' => $request->getRequestUri(),
            'port' => $request->getPort()
        ]);

        return $next($request);
    }
}
    5. ユーザーの応答後にデータを記録します

ユーザーのリクエスト後に、システムによってどのようなデータが返されたのかを知りたい場合があります。
<?php

namespace App\Http\Middleware;

use App\Model\SystemTraceRecord;
use Illuminate\Http\Request;

/**
 * Class TraceRecordMiddleware
 * @package App\Http\Middleware
 */
class TraceRecordMiddleware
{
    public function handle(Request $request, \Closure $next)
    {
        $response = $next($request);
        
        //响应后插入数据
        SystemTraceRecord::create([
            &#39;data&#39; => json_encode($request->all(), JSON_UNESCAPED_UNICODE),
            'response' => $response->getContent() ?: '',
            'status' => $response->getStatusCode()
        ]);

        return $response;
    }
}

    6. ユーザーの詳細ログを記録します

どのユーザーがアクセスしたかを知る必要がある場合があります セッション データを直接取得することもできます

    <?php
    
    namespace App\Http\Middleware;
    
    use App\Model\SystemTraceRecord;
    use Illuminate\Http\Request;
    
    /**
     * Class TraceRecordMiddleware
     * @package App\Http\Middleware
     */
    class TraceRecordMiddleware
    {
        public function handle(Request $request, \Closure $next)
        {
            $response = $next($request);
    
            $session = app(&#39;session&#39;);
    
            SystemTraceRecord::create([
                &#39;user_id&#39; => $session->get('user_info.id', '未知'),
                'username' => $session->get('user_info.username', '未知'),
                'method' => $request->getMethod(),
                'secure' => $request->getScheme(),
                'uri' => $request->getRequestUri(),
                'response' => $response->getContent() ?: '',
                'status' => $response->getStatusCode()
            ]);
    
            return $response;
        }
    }
  • [関連する推奨事項:
  • laravel ビデオ チュートリアル
  • ]
  • 以上がミドルウェアを使用してユーザーリクエストログを記録するlaravelの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。