Laravel Telescope
Laravel Telescope 是一個全面監控的 debug 助理,是由 Laravel 開發團隊所推出的一項功能,支援 Laravel 5.7.7 以上的版本。
其中包括以下的項目都包含在 watcher :
- Requests
- Commands
- Schedule
- Jobs
- Exceptions
- Logs
- Dumps
- Queries
- Models
- Events
- Notifications
- Cache
- Redis
安裝 Telescope
# 直接安裝方式
composer require laravel/telescope
# 建議方式,只在 dev 環境使用
composer require laravel/telescope --dev
接著安裝telescope 及 migrate
php artisan telescope:install
php artisan migrate
如果後續有 Telescope 需要更新時,可以重新執行 publish
php artisan telescope:publish
完成以上安裝後,可以直接訪問 /telescope
關於 Telescope 設定檔位於 config/telescope.php,可以直接在這裡面修改預設 path
<?php
/*
|--------------------------------------------------------------------------
| Telescope Path
|--------------------------------------------------------------------------
|
| This is the URI path where Telescope will be accessible from. Feel free
| to change this path to anything you like. Note that the URI will not
| affect the paths of its internal API that aren't exposed to users.
|
*/
'path' => 'telescope',
關於設定檔裡的參數,簡述如下:
driver - 不能變更,database 是唯一支援的項目
storage - 預設會套用在 .env 所設定的資料庫連線方式
安全性
在本地端,預設安裝及執行後,可以直接從路徑直接訪問後台
在官網建議如果需要設置管控名單,可以透過 provider 設定方式來指定允許人員:
開啟 app/Providers/TelescopeServiceProvider.php ,必且將 gate 設定允許訪問的名單,例如:
protected function gate()
{
Gate::define('viewTelescope', function ($user) {
return in_array($user->email, [
'taylor@laravel.com',
]);
});
}
在實際應用時,會建議把設置以環境變數的方式處理,並且修改為用戶 id 辨識的方式,會更加的優雅
例如:
protected function gate()
{
Gate::define('viewTelescope', function ($user) {
$userId = explode(',' env('TELESCOPE_USERS'));
return in_array($user->id, $userId);
});
}
接著在環境變數配置,例如:
TELESCOPE_USERS=1,3,6
數據修整
依照官方建議,若無特別原因需要保留過久的紀錄,建議執行每日資料清除的方式,避免資料增長太快
清除方式可直接透過設定 schedule 方式,每天執行 telescope:prune 命令的方式,來重整數據:
$schedule->command('telescope:prune')->daily();
或者,可以透過 –hours option 來指定超過多少小時的資料,要被清除
例如,超過 48 hr 的資料才會被執行清除
$schedule->command('telescope:prune --hours=48')->daily();