先日、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ファイル
これにより以下のテーブルが作成されます。
- 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
がない場合は、存在するものに変更しましょう(普通は存在しますが、今回導入したシステムがたまたま変更していました)
- もしauth.phpのguardsに
- 監視するものが多すぎて動作が遅くなるのが嫌な場合、telescope.phpのwatchersで制御することができます
画面サンプル
/telescope/requests
/telescope/exceptions
/telescope/logs
/telescope/queries
/telescope/cache
各データは詳細情報が確認できます。例としてクエリの詳細はこんな感じです。
感想
まだBetaではあるものの動作は安定しており、また導入も簡単なので実用できる状態であると思います。
Debugbarとの比較では、コマンドやキャッシュ(21:42修正 キャッシュは可能でした)が確認できるなどTelescopeのほうが機能が充実しています。
ただTelescopeは(簡単とはいえ)準備が必要なことや、別画面で操作することから手軽さはDebugbarが上だと感じました。
もう少し待てば1.0がリリースされると思いますので、そのときにまた試してみようかなと思います。