Laravel ログを出力してみる


目的

実施環境

  • MacのローカルにLaravelの環境を構築して実施する。環境構築手順の記事はリンクを後述する。
  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.5)
ハードウェア MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
プロセッサ 2 GHz クアッドコアIntel Core i5
メモリ 32 GB 3733 MHz LPDDR4
グラフィックス Intel Iris Plus Graphics 1536 MB
  • ソフトウェア環境
項目 情報 備考
PHP バージョン 7.4.3 Homwbrewを用いて導入
Laravel バージョン 7.0.8 commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする

前提条件

前提情報

  • 本記事ではログの出力までの方法を最短で記載する、ログの機能の詳細の説明は実施しない。
  • 本来アプリ作成時に必要であるDBの作成や.envファイルによるDBの登録などの手順は本記事では説明しない。

読後感

  • ブラウザのページを表示する処理をトリガーにしてstorage/logs/laravel.logファイルに「[YYYY-MM-DD HH:MM:SS] local.DEBUG: test」と言う一行をログとして出力できる。

筆者の勘違い(ほぼ関係ないので飛ばしてください)

  • ログは.envファイルで設定さえすれば出力される物だと思っていた。
  • 実際にはログを出力したい場面のコントローラのアクション内でLogファサードを用いて命令が必須である。

概要

  1. アプリ作成
  2. ルーティングの記載
  3. UserHomeController作成と記載
  4. 確認

詳細

  1. アプリ作成

    1. アプリを作成する任意のディレクトリに移動して下記コマンドを実行して「test」と言う名前のアプリを作成する。

      $ laravel new test
      
  2. ルーティングの記載

    1. testディレクトリで下記コマンドを実行してルーティングファイルを開く。

      $ routes/web.php
      
    2. 開いたルーティングファイルに下記の一行を記載する。

      routes/web.php
      Route::get('/user_home', 'UserHomeController@index');
      
    3. 記載後のルーティングファイルの内容を下記に記載する。

      routes/web.php
      <?php
      
      use Illuminate\Support\Facades\Route;
      
      /*
      |--------------------------------------------------------------------------
      | Web Routes
      |--------------------------------------------------------------------------
      |
      | Here is where you can register web routes for your application. These
      | routes are loaded by the RouteServiceProvider within a group which
      | contains the "web" middleware group. Now create something great!
      |
      */
      
      Route::get('/', function () {
          return view('welcome');
      });
      
      Route::get('/user_home', 'UserHomeController@index');
      
    4. 保存して閉じる。

  3. UserHomeController作成と記載

    1. testディレクトリで下記コマンドを実行してUserHomeController.phpを作成する。

      $ php artisan make:controller UserHomeController
      
    2. 下記コマンドを実行して先のコマンドで作成したUserHomeController.phpを開く。

      $ vi app/Http/Controllers/UserHomeController.php
      
    3. 開いたUserHomeController.phpを下記の様に修正する。

      test/app/Http/Controllers/UserHomeController.php
      <?php
      
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      //下記を追記する、下記の宣言がないとエラーになる
      use Illuminate\Support\Facades\Log;
      
      class UserHomeController extends Controller
      {
          //下記を追記する
          public function index()
          {
              //Log::debug('ログとして出力したい文字列')の様に記載する
              Log::debug('test');
              return redirect('/');
          }
          //上記までを追記する。
      }
      
    4. 保存して閉じる。

  4. 確認

    1. testディレクトリで下記コマンドを実行してまだlogファイルが存在していないことを確認する。「No such file or directory」が出力されればlaravel.logファイルは存在しない。

      $ ls storage/logs/laravel.log
      >ls: storage/logs/laravel.log: No such file or directory
      
    2. testディレクトリで下記コマンドを実行してローカルサーバを起動する。

      $ php artisan serve
      
    3. ブラウザからtestアプリにアクセスする。デフォルトだとhttp://127.0.0.1:8000/にアクセスするとブラウザでtestアプリが表示できる。

    4. 下記画面が表示されていることを確認する。

    5. http://127.0.0.1:8000/user_homeにアクセスしてみる。(アクセスしても何も起こらず、先の画像と同じLaravelのトップページが表示されると思うがその動作は期待する動作である。)

    6. testディレクトリで下記コマンドを実行してログファイルを開く。

      $ less storage/logs/laravel.log
      
    7. 下記の一行が記載されていることを確認する。(YYYY-MM-DD HH:MM:SSはみなさんがhttp://127.0.0.1:8000/user_homeにアクセスした時間が入る。)

      test/storage/logs/laravel.log
      [YYYY-MM-DD HH:MM:SS] local.DEBUG: test 
      
    8. 書き込まれていた場合ログの出力が正常に行われたと言うこととなる。