1
0

More than 3 years have passed since last update.

LravelのLogLevelを環境変数で変更したい (6.0LTS)

Posted at

タイトルの通り Laravel6.0LTS にて、ログレベルを環境変数で変更するための手順です。
チャンネルやその他の項目も含めてログに関するいろいろな設定については他に詳しい記事がありますのでそちらをご参照ください。
Laravel5.6 での ログ設定について

ここでは、そこまで複雑なことがしたいわけではなく、シンプルに、開発環境ではDEBUGまで、ステージ、本番環境ではINFO以上でログを出力するのを、環境変数で調整したい、というやり方です。

.env に変数を追加

適当な値でいいですが、 project_root/.env ファイルにLEVELを指定するための変数を追加します。
ここでは LOG_LEVEL としました。

LOG_LEVEL=info

config/logging.php を修正

ファイルの中身を見ると以下のようになっているかと思います。
(コメント部分と後半は省略)

    'default' => env('LOG_CHANNEL', 'stack'),
    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['daily'],
            'ignore_exceptions' => false,
        ],

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

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

上の例では、default=>stackが指定されており、stackの中でchannels=>dailyが指定されています。
そしてdailyのlevel=>debugになっているため、DEBUG以上のログが出力されることになります。

そこで、この daily=>levelの部分を以下のように書き換えます。

            'level' => env('LOG_LEVEL','debug'),

あとは環境に合わせて、先程 .env に追加した LOG_LEVEL の値を変更してやれば、環境ごとに合わせたログレベルでログが出力されます。

ログレベルの一覧は PSR-3でこのように定義されていて 記載されている順番の並びで、指定したレベルより上に書かれている内容が出力されることになります。

Laravelのバージョンいくつから使えるのかまでは調査していません(4.2と5.1のあと6.0に飛んだだめ…)が、config/logging.php の中身が同じような状態であれば使える方法かと思います。


なにか他にもっと簡単な切り替え方があるような気はするんですが、 .env にはじめから設定されている値はLOG_CHANNEL だけで、別にチャンネル切り替えるつもりは無いんだけど、レベルだけ切り替えるやり方というのが見当たらなかったのでやってみました。
「本来はこうするべき」というやり方がありましたら教えていただけると嬉しいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0