gocpa / laravel-request-time-logger
Package for logging request time
1.0.1
2024-04-23 08:40 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^v8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- laravel/pint: ^1.15
This package is auto-updated.
Last update: 2025-03-23 10:59:35 UTC
README
Установка
composer require gocpa/laravel-request-time-logger
php artisan vendor:publish --provider="GoCPA\LaravelRequestTimeLogger\ServiceProvider" --tag=config
Конфигурация
# Сбор логов о долгих HTTP/DB запросах GOCPA_REQUEST_TIME_LOGGER_LOG_CHANNEL=default GOCPA_REQUEST_TIME_LOGGER_DATABASE_QUERY_SECONDS=2 GOCPA_REQUEST_TIME_LOGGER_SCRIPT_EXECUTION_SECONDS=4
Сбор данных
Для начала сбора данных по медленным запросам - необходимо подключить middleware.
// ВНИМАНИЕ! Нужно использовать только один вариант подключения сбора данных, иначе записи в лог будут дублироваться для каждого запроса // 1. Глобально для всех роутов - пропишите в секцию $middleware protected $middleware = [ // ... \GoCPA\LaravelRequestTimeLogger\LongQueryLoggerMiddleware::class, \GoCPA\LaravelRequestTimeLogger\RequestTimeLoggerMiddleware::class, ]; // 2. Только для определенной группы роутов - пропишите в секцию $middlewareGroups protected $middlewareGroups = [ 'web' => [ // ... \GoCPA\LaravelRequestTimeLogger\LongQueryLoggerMiddleware::class, \GoCPA\LaravelRequestTimeLogger\RequestTimeLoggerMiddleware::class, ], ]; // 3. Только для определенного роута - пропишите в секцию $middlewareAliases protected $middlewareAliases = [ // ... 'log-long-queries' => \GoCPA\LaravelRequestTimeLogger\LongQueryLoggerMiddleware::class, 'log-long-requests' => \GoCPA\LaravelRequestTimeLogger\RequestTimeLoggerMiddleware::class, ];
Проверка:
Перейдите на любой долгий роут, если таких нет, можно создать новый со следующим кодом, перейдите на него, проверьте наличие строчек в файле логов. Удалите тестовый роут
Route::middleware(['log-long-queries', 'log-long-requests'])->get('long-route-test', function () { \Illuminate\Support\Facades\DB::select('SELECT SLEEP(3)'); sleep(2); return 'ok'; });