# Laravel リクエストログ出力
Laravel のログ設定は、config/logging.php ファイルで定義されています。デフォルトでは、ログチャンネルは stack に設定されています。
# Log 設定有効化
新しいログチャンネルを追加して、リクエストログを出力することができます。config/logging.php ファイルに以下のような内容で、新しいログチャンネルを追加します。
'channels' => [
// 略
'requests' => [
'enable' => env('LOG_REQUEST_ENABLE', false),
'driver' => 'daily',
'path' => storage_path('logs/requests.log'),
'level' => 'debug',
],
],
上記の設定では、requests という名前のログチャンネルを作成しています。ログファイルの保存場所は、storage/logs/requests.log になります。
# RequestLogger を作成
リクエストログを記録するためのミドルウェアを作成
php artisan make:middleware RequestLogger
app/Http/Middleware/RequestLogger.php ミドルウエアファイルが自動生成されます。
# RequestLogger.php 編集
app/Http/Middleware/LogRequests.php に以下のようなコードを追加します。
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class RequestLogger
{
private $excludes = [
'_debugbar',
];
/**
* Handle an incoming request.
*
* @param Request $request
* @param Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (config('logging.request.enable')) {
if ($this->isWrite($request)) {
$this->write($request);
}
}
return $next($request);
}
/**
* @param Request $request
* @return bool
*/
private function isWrite(Request $request): bool
{
return ! in_array($request->path(), $this->excludes, true);
}
/**
* @param Request $request
* @return void
*/
private function write(Request $request): void
{
// Log::debug($request->method(), ['url' => $request->fullUrl(), 'request' => $request->all()]);
Log::channel('requests')->debug($request->method(), ['url' => $request->fullUrl(), 'request' => $request->all()]);
}
}
requests ログチャンネルを使用して、リクエスト内容を記録します。
# ミドルウェアを有効にする
app/Http/Kernel.php へミドルウェアを追加します
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\RequestLogger::class,
];
# .env を編集
LOG_REQUEST_ENABLE=true
環境設定ファイルで有効にします。
これで、リクエストログが出力されます。