【Laravel】複数のチャネルにログを出力する
こんにちは。今回はLaravelで複数のチャネルにログ出力する方法を解説します。Laravelではログの出力先設定をチャネルと呼びます。Laravelでは様々なログ出力先を作成することができます。通常のファイル出力の他に、syslogやslackなどにも配信することができます。このチャネルは幾つでも作成することができ、同時に複数のチャネルにログ出力することもできます。
複数のチャネルにログを配信できると、例えばログファイルに出力すると同時にSlackにログを配信することができるようになります。設定はとても簡単です。それでは解説していきます。
設定方法
ログの設定ファイルであるconfig/logging.phpを見てみましょう。チャンネルの設定部分を以下に一部抜粋しました。stack, single, dailyの3つのチャンネルが設定されていることがわかります。
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
],
今回はstackに着目します。このstackというチャネルは他のチャネルにログを配信する動作をします。配信先のチャネルはchannels要素に設定します。上記のコードの場合はchannelsにsingleを設定しています。この場合、stackチャネルに対してログ出力するとsingleチャネルにログ配信されます。このstackチャネルの性質を利用して、複数チャネルへのログ配信を実現することができます。
複数のチャネルにログ配信するためには、stackチャネルのchannelsに複数のチャネルを設定します。ではsingleとdailyの両方にログ配信してみましょう。
'stack' => [
'driver' => 'stack',
'channels' => ['single', 'daily'],
'ignore_exceptions' => false,
],
channelsにsingleとdailyを設定しました。これでconfig/logging.phpの設定は完了です。最後に、 stackチャネルにログ出力するように.envを設定しましょう。
LOG_CHANNEL=stack
これでsingleとdailyの両方にログが出力されます。
まとめ
今回はログを複数チャネルに出力する方法を解説しました。ログの設定一つで割と柔軟にできるので、開発時はすごく役に立つ機能だと思います。また、運用環境と開発環境でログの出力先を変更したい場合などは、stackを複数作成しておくことで解決することができます。複数設定する方法はまた別で記事にしたと思います。
ディスカッション
コメント一覧
まだ、コメントがありません