Laravel カスタムログの設定
操作ログや決済ログ、デバック用のログなど、Laravelでログを取る場合の設定です。
Laravelでは、PHPライブラリのmonologでログを取得しています。
ログの初期設定
/config/logging.php に加筆・変更します。
- チャンネル(channels)に、hogelogを追加
- ドライバー(ルールみたいなもの)を設定、今回はdaily(日ごとにログファイルを生成)にします。
- ログファイルのパスは、storegeの下logを指定(さらに階層を設けることも可能)、ファイル名も指定します。
- ログレベルを設定、今回はinfoにします。
- dailyなので保存日数も指定します。
dailyは、monologのデフォルトで用意されているhandlerです。
毎日ファイルを作成して、日ごとにログを出力します。
設定サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['daily'], 'ignore_exceptions' => false, ], //(省略) 'hogelog' => [ 'driver' => 'daily', // daily(日毎にファイルを分ける) 'path' => storage_path('logs/hoge.log'), // logの保存場所 'level' => 'info', // ログのレベル 'days' => 120, // 保存日数(dailyの場合) ], ]; |
ログの書き込み
Logファサードを使って書き込みます。
1 2 3 4 5 6 |
// Logファサードを使えるようにしておく use Illuminate\Support\Facades\Log; //(省略) Log::channel('hogelog')->info('LOGIN USER', ['id' => '012345']); |
チャンネル名を指定します。
Log::channel('hogelog’)
ログレベル(info)に、メッセージ・情報(配列)を渡します。
->info('LOGIN USER’, ['id’ => '012345’]);
作成されるファイルは以下のようになります。
1 |
storage > log > hoge-2021-09-22.log |
書き込みされるログは以下のようになります。
1 |
[2021-09-22 05:25:11] production.INFO: LOGIN USER {"id":"012345"} |
production.INFO の「production」は、monologでのデフォルト「チャンネル名称」です。
チャンネル名称を変更できるらしいのですが、まだ実際には試してないので、次の機会に確認します。
あまり理解できていない状況なので、とりあえずログが取得できるレベルの使い方です。