Laravel7 環境別にログレベルの違うログを取るようにする方法

開発環境では細かいログを取り、ステージングでは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

返信を残す

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