>PHP 프레임워크 >Laravel >사용자 요청 로그를 기록하기 위해 미들웨어를 사용하는 laravel의 자세한 예

사용자 요청 로그를 기록하기 위해 미들웨어를 사용하는 laravel의 자세한 예

WBOY
WBOY앞으로
2022-04-26 11:53:014109검색

이 글에서는 미들웨어 생성, 미들웨어 등록, 사용자 액세스 기록 등을 포함하여 미들웨어를 사용하여 사용자 요청 로그를 기록하는 것과 관련된 문제를 주로 소개하는 laravel에 대한 관련 지식을 제공합니다. 함께 살펴보시기 바랍니다. 모두에게 도움이 될 것입니다.

사용자 요청 로그를 기록하기 위해 미들웨어를 사용하는 laravel의 자세한 예

【관련 추천 : laravel 동영상 튜토리얼

1. 미들웨어 생성

  • 명령을 사용하여 생성할 수도 있고 직접 생성할 수도 있습니다
php artisan make:middleware 中间件名称(TraceRecordMiddleware)

2. 미들웨어 등록

  • laravel 버전마다 중간 가격을 등록하는 방법이 다르기 때문에 버전 5.6을 예로 들어보겠습니다.
  • 다음 코드를 프로젝트bootstarp/app.php
$app->middleware([
     App\Http\Middleware\TraceRecordMiddleware::class
 ]);

Record에 직접 추가하세요. 사용자 액세스 로그

  • 사실 중간 가격은 요청 인터셉터로 이해될 수 있습니다
  • 그래서 사용자 요청 전의 데이터는 물론 사용자 요청 후의 응답 데이터도 가로챌 수 있습니다
  • 중간 가격 템플릿 기반 on the next
<?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;
    }
}

Four. 사용자의 응답 전 데이터를 기록하세요

  • 사용자가 어떤 경로를 방문했는지만 기록하면 되고, 시스템이 반환한 데이터는 기록하지 마세요
<?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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제