Laavel 중간부품을 사용하여 느린 시간 기록 처리

8728 단어 Laravelmiddlewaretech

개시하다


예전에는 처리가 느릴 때 기록을 찾는 일이 있었다.그때,public/index.php에 직접 썼는데 이번에는 더 통용되는 것이 있습니까?중간부품으로 개작해 보았다.

이전 방식


public/index.php에서
define('LARAVEL_START', microtime(true));
라는 기술이 있기 때문에 이 문서의 맨 아래에 다음과 같은 내용을 추가했다.
(실제 사용하는 것과 조금 다르지만 기본적으로 같다.)
$kernel->terminate($request, $response);

// 以下、追加
$processTime = microtime(true) - LARAVEL_START;

if ($processTime > 3) {
    $context = [
        'process_time' => number_format($processTime, 2),
        'url' => request()->url(),
        'method' => request()->method()
    ];

    info("Too slow", $context); // ログを取る
}
이렇게 처리하는 데 3초 이상이 걸릴 때 기록해야 한다.
아래의 일지를 얻을 수 있습니다.
[2021-06-17 14:28:43] local.INFO: Too slow {"process_time":"4.05","url":"http://temp.abc","method":"GET"}
[2021-06-17 14:29:25] local.INFO: Too slow {"process_time":"3.07","url":"http://temp.abc","method":"POST"}
이것은 전체 시간을 측정하는 느낌이지만 아래의 중간부품을 사용하는 버전 중 어느 것인지 컨트롤러가 처리할 때의 시간 측정인 것 같으니 미리 양해해 주십시오.

중간판


적당한 이름으로 중간부품을 만들다.
php artisan make:middleware LogSlowAction
이 중간부품은 다음과 같다.
    public function handle(Request $request, Closure $next)
    {
        $startTime = microtime(true);

        $response = $next($request);

        $processTime = microtime(true) - $startTime;

        if ($processTime > 3) {
            $context = [
                'process_time' => number_format($processTime, 2),
                'url' => request()->url(),
                'method' => request()->method()
            ];

            info("Too slow", $context); // ログを取る
        }

        return $response;
    }
이런 느낌이에요.뭐, 기본적으로public/index야.php에 썼을 때랑 똑같아요.그리고 그것을 다시 웹 페이지에 놓아라.php 등 장치를 사용하면 됩니다.
굳이 쓰자면 베프프프프프와 애프터의 중간부품이 같은 반에 동거하는 타입으로 잘 쓰지 않죠.

잡감


이러면 로그가 지워지고 서버가 느려지고 코드에 문제가 있을까...
이상한 점이 있으면 메시지를 남겨주세요.

좋은 웹페이지 즐겨찾기