もくじ
ログ設定
Laravelをインストールすれば初めからログが出力されるように設定されています。
LOG_CHANNEL=stack
stack
チャンネルは、複数のログチャンネルを単一のチャンネルに集約するために使用します。
ここを変更することでカスタマイズすることができます。
出力先
デフォルト
storage/logs/
配下にあるlaravel.log
にはかれます。
任意の場所に設定
config/logging.php
の下記★のパスを変更すれば、ログの出力先を任意に設定できます。
'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single'], 'ignore_exceptions' => false, ], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), // ★1 'level' => 'debug', ], 'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), // ★2 'level' => 'debug', 'days' => 14, ], . . .
'channels' => ['single'],
なら★1を変えます。
日毎にログ出力
日毎にログを切り出したいときはチャネルをdaily
にします
LOG_CHANNEL=daily
.env
ファイルをdaily
に変更したらlogging.php
も確認しましょう。
'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', 'days' => 14, ],
ファイル名
デフォルトがlaravel.log
に対して、laravel-YYYY-MM-DD.log
の形式になります。
daily
に設定していなければlaravel.log
内にどんどん追加されていきます。
最大保存日数
'days' => 14,
デフォルトでは最大保存日数は14
になっています。
この場合14日分保存後にさらにログが出力されたら古いものから削除されます。
もし0
にした場合削除されずログが残り続けディスクを圧迫することになるので注意しましょう。
ログのフォーマット
[YYYY-MM-DD HH:II:SS] 環境.ログレベル: メッセージ コンテキスト
たとえば、アプリケーションキーの設定を忘れた場合に出力されるエラーだとこうなります。一部加工済み。
[2022-04-01 00:00:00] laravel.ERROR: No application encryption key has been specified. {"exception":"[object] (RuntimeException(code: 0): No application encryption key has been specified. at xxx/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php:80)
ログを仕込む
コントローラーなどに仕込むことで任意のログを出力できます。
ヘルパーやファザードを使えば簡単に実装できます。
ログレベル
- emergency
- alert
- critical
- error
- warning
- notice
- info
- debug
ヘルパー
logger('test', ['foo' => 'bar']); info('test', ['foo' => 'bar']); logs()->notice('test', ['foo' => 'bar']); logs()->warning('test', ['foo' => 'bar']); logs()->error('test', ['foo' => 'bar']); logs()->critical('test', ['foo' => 'bar']); logs()->alert('test', ['foo' => 'bar']); logs()->emergency('test', ['foo' => 'bar']);
ファサード
use Illuminate\Support\Facades\Log; Log::debug('test', ['foo' => 'bar']); Log::info('test', ['foo' => 'bar']); Log::notice('test', ['foo' => 'bar']); Log::warning('test', ['foo' => 'bar']); Log::error('test', ['foo' => 'bar']); Log::critical('test', ['foo' => 'bar']); Log::alert('test', ['foo' => 'bar']); Log::emergency('test', ['foo' => 'bar']);
出力結果
[2022-04-01 00:00:00] local.DEBUG: test {"foo":"bar"} [2022-04-01 00:00:00] local.INFO: test {"foo":"bar"} [2022-04-01 00:00:00] local.NOTICE: test {"foo":"bar"} [2022-04-01 00:00:00] local.WARNING: test {"foo":"bar"} [2022-04-01 00:00:00] local.ERROR: test {"foo":"bar"} [2022-04-01 00:00:00] local.CRITICAL: test {"foo":"bar"} [2022-04-01 00:00:00] local.ALERT: test {"foo":"bar"} [2022-04-01 00:00:00] local.EMERGENCY: test {"foo":"bar"}