LaravelにはTelescope(テレスコープ)というデバック用ツールがあります。
アプリ内のすべてのリクエスト、メール、Gate処理などを視覚化でき、エラーの原因を見つけやすくなる便利なツールです。
「デバックツールは開発環境でだけ使いたい」という場合が多いと思うので、開発環境でのみ有効にする設定と共に、Telescopeのインストール方法と使い方、お掃除方法など紹介しますね。
地味ですが、お掃除も大事です♪
LaravelデバックツールTelescopeを開発環境にだけインストールする方法
まずはインストール方法から。
Telescopeのインストール方法
①下記コマンドを入力します。
開発環境にだけインストールする場合は、最後に–dev をつけます。
1 |
composer require laravel/telescope --dev |
②次に、下記コマンドを入力します。
1 |
php artisan telescope:install |
③最後にマイグレートを実行します。
1 |
php artisan migrate |
この時点でデータベースを確認すると、下記のようにtelescope用のテーブルが新たに作成されています。
Telescopeを開発環境にだけインストールする設定
開発環境でだけ使用したい場合には、もう少し設定が必要です。
公式マニュアルには、下記3ステップが掲載されています。
① config/app.php ファイルを編集
config/app.phpファイルの中の TelescopeServiceProviderの設定を削除、または無効にしておきます。
【app.php】
② AppServiceProvider.phpの設定
App/Providers/AppServiceProvider.php ファイルに、下記を追加します。
【AppServiceProvider.php】
1 2 3 4 |
if ($this->app->environment('local')) { $this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class); $this->app->register(TelescopeServiceProvider::class); } |
追加箇所は、下記の黄色で囲った部分になります。
③composer.json編集
本番環境でTelescopeライブラリが自動検出されないように、composer.jsonの dont-discover の項目に "laravel/telescope" を追加します。
LaravelデバックツールTelescopeを使ってみよう
準備が整ったら、実際にTelescopeを使ってみましょう。
ローカル上の環境を立ち上げ、ローカル環境URL/telescope でダッシュボードを表示できます。
ダッシュボードが出てこない場合は、サーバーを立ち上げなおしてみてくださいね。
ダッシュボードには、Webアプリ内で実行kされたリクエストが一覧表示されています。
各リクエストの詳細は、右側の 目のマークをクリックすると、確認できます。
たとえば、500エラーになってしまったとします。右側の目のマークをクリックすると、エラーの詳細が表示されます。
ページ下にエラーメッセージが表示されているので、後からでもエラーメッセージを確認できます。
リクエスト以外にも、様々な履歴を取得できます。左側のサイドバーから、各処理を選択します。
たとえばWebアプリからメールを送信した履歴をチェックするなら、Mailを選択します。Gateの処理はGates、エラーログは、Logsからチェックできます。
Telescopeを使った後は、お掃除しましょう。
Telescopeはすべての処理を残してくれるので、データ量はどんどん増えていきます。Laravelの公式マニュアルでは、「データの刈込」を行うように書かれています。
データの刈り込みを行わないと、
telescope_entries
テーブルにレコードがあっという間に溜まります。これを軽減するに、telescope:prune
Artisanコマンドをスケジュールして毎日実行する必要があります。
参考:https://readouble.com/laravel/8.x/ja/telescope.html
そういったわけで、たまにお掃除をしてあげたほうが良いかな、と思います。下記コマンドを実行すると、24時間以上前のエントリーが削除されます。
1 |
php artisan telescope:prune |
コマンドを実行すると、何個のエントリー処理したかが表示されます。
ちなみにpruneは、英語で【刈り込む】【剪定する」って意味です。
面白いネーミングですね。
「面倒だから、ぜんぶのエントリーを削除しちゃおう!」という場合は、下記コマンドを実行してください。
1 |
php artisan telescope:clear |
Telescope内に蓄積された処理履歴が一気に消せます。
やっぱりやめた!はできないのでご注意を。
*スケジュール処理を実行する場合は、次のようなコマンドをApp/Console/Kernel.phpに加えます。
1 |
$schedule->command('telescope:prune')->daily(); |
Telescopeを使わない時は、お休みさせておきましょう。
お掃除もメンドウなので^^; Telescopeを普段は使わない場合には、お休みさせておきましょう。
config/telescope.php の65行目あたり TELESCOPE_ENABLED をtrueからfalseに変えると、無効になります。
【telescope.php】
1 |
'enabled' => env('TELESCOPE_ENABLED', false), |
これは .envファイルに TELESCOPE_ENABLEDという項目があれば、その設定を使う、なければfalseにする、という意味です。
つまり、.envファイルに下記のように TELESCOPE_ENABLED の項目を追加し、falseに設定してもOKです。
1 |
TELESCOPE_ENABLED=false |
さいごに
以上、LaravelのTelescopeについて紹介しました。
Telescopeは見えない部分を視覚化できるので、なかなか頼もしいです。
「エラーにはならないけれど、処理がうまくできない」
なんて時にも、何が行われているかが分かって役立ちますよ。