Laravelでログを出力する方法
Laravelでログを出力する方法をまとめます。
公式ドキュメント
https://laravel.com/docs/9.x/logging
Laravelのログをファサードを使用して出力する
Laravelのログをファサードのクラスを使用して出力する方法です。
下記のようなクラスを使用して、出力してみました。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; class LogTesterController extends Controller { public function outputLogFacade() { Log::emergency("emergency ログ!"); Log::alert("alert ログ!"); Log::critical("critical ログ!"); Log::error("error ログ!"); Log::warning("warning ログ!"); Log::notice("notice ログ!"); Log::info("info ログ!"); Log::debug("debug ログ!"); } }
outputLogFacadeメソッドにアクセスしたら、それぞれのログレベルでメッセージを出力するようにしました。
Logファサードを使用する場合には、use文を使用してIlluminate\Support\Facades\Log
を読み込んでおきます。
ログの出力場所と内容確認
画面描画やメソッドが発火することで出力されます。
出力されるログはデフォルトで、/storage/logs/laravel.log
の場所に出力されます。
local.EMERGENCY: emergency ログ! local.ALERT: alert ログ! local.CRITICAL: critical ログ! local.ERROR: error ログ! local.WARNING: warning ログ! local.NOTICE: notice ログ! local.INFO: info ログ! local.DEBUG: debug ログ!
Laravelのログをヘルパーを使用して出力する
loggerヘルパーを使用して出力することもできます。
public function outputLogHelper() { logger()->emergency("emergency ログ!"); logger()->alert("alert ログ!"); logger()->critical("critical ログ!"); logger()->error("error ログ!"); logger()->warning("warning ログ!"); logger()->notice("notice ログ!"); logger()->info("info ログ!"); logger()->debug("debug ログ!"); }
出力されるログレベルについて
出力できるログのレベルについてはRFC5424の仕様に順守しているようです。
公式ドキュメント
https://laravel.com/docs/9.x/logging#log-levels
emergency | システム利用不可(最重要)レベル |
---|---|
alert | 緊急対応必要なレベル |
critical | 致命的なエラー |
error | 一般的なエラー |
warning | 警告レベル |
notice | 通知レベル |
info | システム情報 |
debug | デバッグ情報 |
Laravelのログの設定
Laravelのログの設定に関しては、config/logging.php
に書いています。
ログの名前を変更したい
デフォルトでは、stackチャンネルで、channelsにはsingleが設定されています。 そのため、channels配列のsingle配列の中身を修正します。
pathの箇所を下記のように変更します。
'single' => [ 'driver' => 'single', 'path' => storage_path('logs/hoge.log'), 'level' => env('LOG_LEVEL', 'debug'), ],
/storage/logs/hoge.log
にログが出力されるようになります。
ログを日別に出力する
configファイルのstackのchannelsをdailyに変更するか、.envのLOG_CHANNELを変更します。
LOG_CHANNEL=daily