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 등 장치를 사용하면 됩니다.굳이 쓰자면 베프프프프프와 애프터의 중간부품이 같은 반에 동거하는 타입으로 잘 쓰지 않죠.
잡감
이러면 로그가 지워지고 서버가 느려지고 코드에 문제가 있을까...
이상한 점이 있으면 메시지를 남겨주세요.
Reference
이 문제에 관하여(Laavel 중간부품을 사용하여 느린 시간 기록 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nshiro/articles/e76e0434950689텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)