Laravel7 チャンネルを切り替えてログを出力する方法

config/logging.phpである程度柔軟な設定が出来るが、logging.phpの’channels.stack’の’channels’は、複数のチャンネルではなく複数のハンドラーを束ねるものなので、ログレベルによってアクションを指定するということしか出来ない。
なので、stackだけでは、障害調査などで通常のログとは別のファイルに障害調査のログのみを出力したいということが出来ない。

そういう場合は、チャンネルを切り替えて(指定して)ログを出力すれば良い。

config/logging.phpに’bug_research’というチャンネルを追加する。

    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single'],
            'ignore_exceptions' => false,
        ],

        'single' => [
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
        ],

        'bug_research' => [
            'driver' => 'single',
            'path' => storage_path('logs/bug_research.log'),
            'level' => 'debug',
        ],
    ],

出力したい箇所で、チャンネルを指定してログ出力を行う。

Log::channel('bug_research')->info('return code:'.$ret);

つまり、通常のログ出力

Log::debug('index');

では、logs/laravel.logにログ出力され

Log::channel('bug_research')->info('return code:'.$ret);

では、logs/bug_research.logにログ出力される。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です