開発環境では細かいログを取り、ステージングではwarning以上、本番環境ではerror以上のログを取るようにする方法。
Laravelのログに関する設定ファイルは、config/logging.phpの1ファイルなので、全ての環境の定義をこのファイルで行う必要があり、環境ごとのenvファイルでlogging.phpのどの定義を有効にするかということをやる。
logging.phpの’channels’でログレベルに応じた処理を定義する。
デフォルトで沢山定義されているが、基本この中の1つが有効になる。
※stackによる複数設定も可能ではある。
つまり、envファイルからいずれか1つを指定することになるので、各環境のenvファイルからそれぞれ別のログレベルの定義を指定すれば良い。
config/logging.php
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
・
・
・
],
例えば、開発環境ではデバッグレベル以上のログ、ステージングではwarning以上のログ、本番環境ではエラー以上のログを取得する場合は、以下のようになる。
config/logging.php
'channels' => [
'develop' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
'staging' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'warning',
],
'production' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'error',
],
],
各環境のenvファイル
■開発環境用のenvファイル
LOG_CHANNEL=develop
■ステージング用のenvファイル
LOG_CHANNEL=staging
■本番環境用のenvファイル
LOG_CHANNEL=production
envファイルのLOG_CHANNELに記述された文字列と一致するものをlogging.phpの’channels’から探し出し有効となる。
ちなみに、ログレベルは8段階あり、logging.phpのlevelで設定されたレベル以上のログを拾うようになっている。
高い方から順に以下のように定義されている。
- emergency
- alert
- critical
- error
- warning
- notice
- info
- debug