エンジニア初心者がPHP/Laravelを学ぶ 仕事

【Laravel】リアルタイムのログを流してリクエストパラメータを確認

2023年2月4日


今回はLogファザードを使ったデバッグ方法で、JavaScriptからfetch()でリクエストされた値をを確認する。

ユッケです。

設定

最初に.envファイルでAPP_DEBUGがtrueであることを確認。
デフォルトでtrueになっているはず。

デバッグしたい箇所にLogファサードを記述

Logファザードの使い方は超簡単。
Illuminate\Support\Facades\Logを上に記載した後に、
確認したい変数や配列などを「Log::debug()」の引数に入れてログファイルを確認するだけ。
今回は下記でログを出力する。
my_project/src/my_project/app/Http/Requests/CustomerSearchRequest.php

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Support\Facades\Log; // ←追記



class CustomerSearchRequest extends FormRequest
{
  // 下記追記
  protected function prepareForValidation()
  {
    Log::debug('---------------------------------');
    Log::debug($this);
    Log::debug('---------------------------------');
  }

  /**
   * Determine if the user is authorized to make this request.
   *
   * @return bool
   */
  public function authorize()
  {
    return true;
  }

  /**
   * Get the validation rules that apply to the request.
   *
   * @return array
   */
  public function rules()
  {
    return [
      'data' => ['required'],
      'data.startDate' => 'required',
      'data.endDate' => 'required',
    ];
  }

  public function messages()
  {
    return [
      'data.required' => 'リクエストが不正です。(data:必須)',
      'data.startDate.required' => 'リクエストが不正です。(startDate:必須)',
      'data.endDate.required' => 'リクエストが不正です。(endDate:必須)',
    ];
  }

ログの出力先は標準ログ「storage/logs/laravel.log」に記述される。

Git Bashでtailコマンドでリクエストの値を確認

$ cd /c/Data/WebSite/my_project/src/my_app/storage
$ tail -f logs/laravel.log
// ここで、リクエスト送信。すると下記みたいにログが出力される。
[2023-02-03 08:23:55] local.DEBUG: ---------------------------------
[2023-02-03 08:23:55] local.DEBUG: array (
  'sessionId' => 'hogehoge',
  'data' =>
  array (
    'startDate' => '2022-10-01',
    'endDate' => '2022-10-31',
  ),
)
[2023-02-03 08:23:55] local.DEBUG: ---------------------------------

ログレベルについて

Log::emergency("emergency");
Log::alert("alert");
Log::critical("critical");
Log::error("error");
Log::warning("warning");
Log::notice("notice");
Log::info("info");
Log::debug("debug");

 

-エンジニア初心者がPHP/Laravelを学ぶ, 仕事