Laravel の ログ周りについて
Laravel でのログの出し方や、ログファイルの場所、デイリーにログファイルを切り替えたりする方法などについて述べる
ログを出力する
コントローラーなどの中でログを出すには、
use Illuminate\Support\Facades\Log;
を書いて、
Log::info('message');
Log::info('message', ['key1' => $value1, 'key2' => $value2]);
みたいな感じで変数を出したりとか。
ログレベルは、
Log::emergency
Log::alert
Log::critical
Log::error
Log::warning
Log::notice
Log::info
Log::debug
が指定できる。
ほかにもlogger('message');があるがLog::debugと同じなので混乱するので使わない。
ログの出力先
出力先は、
storage\logs\laravel.log
デフォルトだと無限に大きくなる上にログレベルがデバッグだから大変なことになる。
ログレベルの変更
開発中はログレベルはデバッグでも良いがリリースする際はさすがに量が多いので変更したい。
変更するには、
.env
ファイル の LOG_LEVEL=debug を変えれば良いだけ。
ログの出力を日付別に出したい
デフォルトだと1ファイルに延々書き込んでいくのでとんでもない大きさになってしまうしいつか容量オーバーになる。
ので、いろいろLaravelが機能を用意してくれているがそのうちの一つに daily
がある。
設定場所はログレベルと同様に、 設定場所はログレベルと同様 .env
ファイルの LOG_CHANNEL。
デフォルトはstackとなっているが、これは1ファイルに延々書かれてしまうということ。
これをdailyにすると、
LOG_CHANNEL=daily
ログが日付ごとに出力されるようになる。
が、デフォルトだと14日でローテート(古いのが削除)されてしまう。もう少し保存しておきたい、というのであれば、
config/logging.php
を変更することで対応できる。
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
],
以上!