Laravelを扱うときに最初にいじる設定ファイルの.envについて、少しつまったのとあまり頻繁にいじることもないだろうので備忘録も兼ねて書きます
状況
- .envに記述したパスの変数
LOG_DIRECTORY
とデフォルトパスstorage_path('logs/laravel.log')
でログの出力先を変えたい - ログの出力先はstorage配下としたい
躓いたところ
- .envとconfig/logging.phpの対応するチャンネルに対して(今回はdaily)以下の用に記述したがうまくログを出してくれない
- デフォルトでstorage_pathを用いてるから同じ様に書いたら良くない?と思い記述
.env
LOG_DIRECTORY=logs/laravel.log
logging.php
'daily' => [
'driver' => 'daily',
'path' => env(storage_path('LOG_DIRECTORY'), storage_path('logs/laravel.log')),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
],
結論
-
storage_path('LOG_DIRECTORY')
と書いてはいけない。 -
.env
に絶対パスを記述する
.env
LOG_DIRECTORY=/laravelのパス/logs/laravel.log
logging.php
'daily' => [
'driver' => 'daily',
'path' => env('LOG_DIRECTORY', storage_path('logs/laravel.log')),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
],
なぜログが出力されなかったか
.envには環境変数が記述されるが関数の引数として用いることができないため。
storage_path('LOG_DIRECTORY')
と記述するとパスが/プロジェクトのpath/'LOG_DIRECTORY'
となるらしい...