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にログ出力される。