Laravelのデバッグツール、Laravel Telescopeを試した

f:id:hacktk:20181029102559p:plain

先日、Laravel Telescope のBetaがリリースされました。
これを書いている時点でのstableは0.1.3ですが、1.0ブランチが進行中です。

Laravel TelescopeはLaravelオーガニゼーション謹製のデバッグツールで、リクエストや例外、ログ、DBクエリなど多くのものを監視して表示することができます。
Laravelのデバッグツールといえば Laravel Debugbar ですが、これを置き換えるものになるかもしれないので試しました。

導入

readmeのとおりに進めます。

  • readmeにも書いてあるとおり、 Laravel 5.7.7 以上 が必要です
  • 私の環境では bcmath拡張モジュールの導入 が必要でした
    • デバッグを試す関係上、現在稼働中システムの開発環境に導入していますので、まっさらの環境だと他にも導入が必要かもしれません

準備ができたら以下のコマンドを実行します。

$ composer require laravel/telescope --dev
$ php artisan telescope:install
$ php artisan migrate

エラーが出なければ成功です。

telescope:installコマンド

https://github.com/laravel/telescope/blob/v0.1.3/src/Console/InstallCommand.php

これにより以下のファイルが新規に作成されます。(config/app.phpも変更されます)

  • app/Providers/TelescopeServiceProvider.php
  • config/telescope.php
  • public/vendor/telescope/app-dark.css
  • public/vendor/telescope/app.css
  • public/vendor/telescope/app.js
  • public/vendor/telescope/mix-manifest.json

実行されるmigrateファイル

https://github.com/laravel/telescope/blob/v0.1.3/src/Storage/migrations/2018_08_08_100000_create_telescope_entries_table.php

これにより以下のテーブルが作成されます。

  • telescope_entries
  • telescope_entries_tags
  • telescope_monitoring

備考

  • telescope:installコマンド実行時にconfig/app.phpのprovidersにTelescopeServiceProviderが追加されるのですが、Laravelのルートの名前空間をデフォルトの App から変更していると設定されません
    • 手動で [rootの名前空間名]\Providers\TelescopeServiceProvider::class を追加しましょう
  • telescope.phpで対象middlewareにデフォルトで web が指定されています
    • もしauth.phpのguardsに web がない場合は、存在するものに変更しましょう(普通は存在しますが、今回導入したシステムがたまたま変更していました)
  • 監視するものが多すぎて動作が遅くなるのが嫌な場合、telescope.phpのwatchersで制御することができます

画面サンプル

/telescope/requests f:id:hacktk:20181029102640p:plain

/telescope/exceptions f:id:hacktk:20181029102645p:plain

/telescope/logs f:id:hacktk:20181029102651p:plain

/telescope/queries f:id:hacktk:20181029102657p:plain

/telescope/cache f:id:hacktk:20181029102702p:plain

各データは詳細情報が確認できます。例としてクエリの詳細はこんな感じです。 f:id:hacktk:20181029102708p:plain

感想

まだBetaではあるものの動作は安定しており、また導入も簡単なので実用できる状態であると思います。

Debugbarとの比較では、コマンドやキャッシュ(21:42修正 キャッシュは可能でした)が確認できるなどTelescopeのほうが機能が充実しています。
ただTelescopeは(簡単とはいえ)準備が必要なことや、別画面で操作することから手軽さはDebugbarが上だと感じました。

もう少し待てば1.0がリリースされると思いますので、そのときにまた試してみようかなと思います。