Telescope 應用程式除錯工具
- 安裝
- 更新Telescope
- 自訂資料遷移
- 單項過濾
- #批次過濾
- 可用的監聽
- 快取監聽
- #指令監聽
- 資料監聽
- 事件監聽
- 異常監聽
- #Gate 監聽
- 進程監聽
- 日誌監聽
- 郵件監聽
- 模型監聽
- 訊息通知監聽
- 資料查詢監聽
- #Redis 監聽
- 請求監聽
- Schedule 監聽
- #
Laravel Telescope
訊息通知監聽資料查詢監聽#Redis 監聽安裝
你可以使用Composer 在Laravel 專案中安裝Telescope 擴充功能:
composer require laravel/telescope
安裝Telescope 後,可以在Artisan 使用telescope:install
指令來設定擴充實例。安裝Telescope 後,您也應執行migrate
指令:
php artisan telescope:install php artisan migrate
#更新Telescope
更新Telescope 時,您應該重新設定載入Telescope 執行個體:
php artisan telescope:publish
僅在特定環境中安裝
如果您打算只使用Telescope 來協助您的本機開發。可以使用--dev
標誌安裝Telescope:
composer require laravel/telescope --dev
運行telescope:install
後,您應該從app
設定檔中刪除TelescopeServiceProvider
服務提供註冊。相反,在AppServiceProvider
的register
方法中手動註冊服務:
use Laravel\Telescope\TelescopeServiceProvider; /** * 注册应用服务。 * * @return void */public function register(){ if ($this->app->isLocal()) { $this->app->register(TelescopeServiceProvider::class); } }##自訂資料遷移如果您不打算使用Telescope 的預設遷移,則應該在
AppServiceProvider 的
register 方法中呼叫
Telescope::ignoreMigrations 方法。您可以使用
php artisan vendor:publish --tag=telescope-migrations 指令匯出預設遷移。
config/telescope.php。此設定檔可讓您設定監聽程式選項,每個設定選項都包含其用途說明,因此請務必徹底瀏覽此檔案。
enabled 設定選項完全停用Telescope 的資料收集:
'enabled' => env('TELESCOPE_ENABLED', true),
有了資料修改,
telescope_entries 表可以非常快速地累積記錄。為了緩解這個問題,你應該使用 Artisan 每天執行 telescope:prune
指令:
預設情況下,將取得超過 24 小時的所有資料。在呼叫指令時可以使用 $schedule->command('telescope:prune')->daily();
選項來決定保留 Telescope 資料的時間。例如,以下指令將刪除48 小時前所建立的所有記錄:$schedule->command('telescope:prune --hours=48')->daily();
/telescope
處顯示儀表板。預設情況下,您只能在本機 環境中存取此儀表板。在你的
app/Providers/TelescopeServiceProvider.php 檔案中,有一個
gate 方法。此授權能控制在
非本地 環境中對 Telescope 的存取。您可以根據需要隨意修改此權限限制以對Telescope 安裝和存取:
/** * 註冊 Telescope Gate。 * * 使用 Gate 决定谁可以在非本地环境中访问 Telescope。 * * @return void */ protected function gate(){ Gate::define('viewTelescope', function ($user) { return in_array($user->email, [ 'taylor@laravel.com', ]); }); }################################### #
單一項目過濾
您可以透過在 TelescopeServiceProvider
中註冊的 filter
回呼來過濾 Telescope 記錄的資料。預設情況下,此回呼會記錄本地
環境中的所有資料以及所有其他環境中的例外狀況、進程中斷、排程任務和帶有受監控標記的資料:
/** * 注册应用服务。 * * @return void */ public function register(){ $this->hideSensitiveRequestDetails(); Telescope::filter(function (IncomingEntry $entry) { if ($this->app->isLocal()) { return true; } return $entry->isReportableException() || $entry->isFailedJob() || $entry->isScheduledTask() || $entry->hasMonitoredTag(); }); }
批次過濾
雖然filter
回調過濾單一條目的數據,但您可以使用filterBatch
方法註冊一個回調,此回調會過濾給定請求或控制台命令的所有資料。如果回呼回傳true
,則所有資料都由Telescope 記錄:
use Illuminate\Support\Collection; /** * 注册应用服务。 * * @return void */ public function register(){ $this->hideSensitiveRequestDetails(); Telescope::filterBatch(function (Collection $entries) { if ($this->app->isLocal()) { return true; } return $entries->contains(function ($entry) { return $entry->isReportableException() || $entry->isFailedJob() || $entry->isScheduledTask() || $entry->hasMonitoredTag(); }); }); }
可用的監聽
當在控制當台執行指令或處理請求時,Telescope 監聽器會收集應用程式資料。您可以在config/telescope.php
設定檔中自訂要啟用監聽項目的清單:
'watchers' => [ Watchers\CacheWatcher::class => true, Watchers\CommandWatcher::class => true, ... ],
有些監聽器也允許您提供其他自訂選項:
'watchers' => [ Watchers\QueryWatcher::class => [ 'enabled' => env('TELESCOPE_QUERY_WATCHER', true), 'slow' => 100, ], ... ],
快取監聽
當快取鍵被命中、遺漏、更新、遺忘時,快取監聽器會記錄資料。
指令監聽
只要執行 Artisan 指令,指令監聽器就會記錄參數、選項、退出程式碼和輸出。如果您想要排除監聽器記錄的某些命令,您可以在config/telescope.php
檔案的ignore
選項中指定命令:
'watchers' => [ Watchers\CommandWatcher::class => [ 'enabled' => env('TELESCOPE_COMMAND_WATCHER', true), 'ignore' => ['key:generate'], ], ... ],
資料監聽
資料監聽器在Telescope 中記錄並顯示您的資料變數。使用 Laravel 時,可以使用全域 dump
函數輸出變數。必須在瀏覽器中開啟資料監聽器選項卡,才能進行輸出變量,否則監聽器將忽略此輸出。
事件監聽
事件監聽器記錄應用程式調度的任何事件的有效負載、監聽器和廣播資料。事件監聽器忽略了 Laravel 框架的內部事件。
異常監聽
異常監聽器記錄應用程式引發的任何可報告異常的資料和堆疊追蹤。
Gate 監聽
Gate 監聽器記錄您的應用程式的 Gate 和政策檢查的資料和結果。如果您希望將某些能力排除在監聽器的記錄之外,您可以在config/telescope.php
檔案的ignore_abilities
選項中指定它們:
'watchers' => [ Watchers\GateWatcher::class => [ 'enabled' => env('TELESCOPE_GATE_WATCHER', true), 'ignore_abilities' => ['viewNova'], ], ... ],
進程監聽
進程監聽器記錄應用程式分派的任何作業的資料和狀態。
日誌監聽
日誌監視器記錄應用程式寫入的任何日誌的日誌資料。
#郵件監聽
郵件監視器可讓您查看電子郵件的瀏覽器內預覽及其相關資料。您也可以將該電子郵件下載為 .eml
檔案。
模型監聽
只要調度了模型的create
、updated
、 restored
或deleted
事件,模型觀察器就會記錄模型變更。您可以透過監聽器的events
選項指定應記錄哪些模型事件:
'watchers' => [ Watchers\ModelWatcher::class => [ 'enabled' => env('TELESCOPE_MODEL_WATCHER', true), 'events' => ['eloquent.created*', 'eloquent.updated*'], ], ... ],
訊息通知監聽
訊息通知監聽器記錄您的應用程式發送的所有通知。如果通知觸發了電子郵件並且您啟用了郵件監聽器,則電子郵件也可以在郵件監視器畫面上進行預覽。
資料查詢監聽
資料查詢監聽器記錄應用程式執行的所有查詢的原始 SQL、綁定和執行時間。觀察者也將任何慢於 100 毫秒的查詢標記為 slow
。您可以使用觀察者的slow
選項自訂慢查詢閾值:
'watchers' => [ Watchers\QueryWatcher::class => [ 'enabled' => env('TELESCOPE_QUERY_WATCHER', true), 'slow' => 50, ], ... ],
Redis 監聽
#必須啟用Redis 事件才能使Redis 監聽器正常運作。您可以透過在
app/Providers/AppServiceProvider.php
檔案的boot
方法中呼叫Redis::enableEvents()
來啟用 Redis 事件。
Redis 監聽器記錄您的應用程式執行的所有 Redis 命令。如果您使用 Redis 進行緩存,Redis 監聽器也會記錄快取命令。
請求監聽
請求監聽器記錄與應用程式處理的任何請求相關聯的請求、標頭、會話和回應資料。您可以透過size_limit
(以KB 為單位)選項限制回應資料:
'watchers' => [ Watchers\RequestWatcher::class => [ 'enabled' => env('TELESCOPE_REQUEST_WATCHER', true), 'size_limit' => env('TELESCOPE_RESPONSE_SIZE_LIMIT', 64), ], ... ],
Schedule 監聽
#Schedule 監聽器記錄應用程式運行的任何計劃任務的命令和輸出。