Вступление
Laravel Telescope - элегантный помощник для отладки каркаса Laravel. Телескоп обеспечивает понимание запросов, поступающих в ваше приложение, исключений, записей журнала, запросов к базе данных, заданий в очереди, почты, уведомлений, операций кэширования, запланированных задач, дампов переменных и многого другого. Телескоп - прекрасный компаньон для вашей локальной среды разработки Laravel.
Установка
Вы можете использовать Composer для установки Telescope в ваш проект Laravel:
composer require laravel/telescope
После установки Telescope опубликуйте его ресурсы с помощью команды Artisan. После установки Telescope вы также должны выполнить команду:telescope:install
migrate
php artisan telescope:install
php artisan migrate
Обновление телескопа
При обновлении Telescope вы должны повторно опубликовать ресурсы Telescope:
php artisan telescope:publish
Установка только в определенных средах
Если вы планируете использовать только Telescope для локальной разработки, вы можете установить Telescope, используя --dev
флаг:
composer require laravel/telescope --dev
После запуска вы должны удалить регистрацию поставщика услуг из вашего файла конфигурации. Вместо этого вручную зарегистрируйте поставщика услуг следующим способом :telescope:install
TelescopeServiceProvider
app
register
AppServiceProvider
use App\Providers\TelescopeServiceProvider;
/**
* Register any application services.
*
* @return void
*/
public function register()
{
if ($this->app->isLocal()) {
$this->app->register(TelescopeServiceProvider::class);
}
}
Настройка миграции
Если вы не собираетесь использовать миграции Telescope по умолчанию, вам следует вызвать метод в вашем методе . Вы можете экспортировать миграции по умолчанию с помощью команды.Telescope::ignoreMigrations
register
AppServiceProviderphp artisan vendor:publish --tag=telescope-migrations
Конфигурация
После публикации ресурсов Telescope его основной файл конфигурации будет находиться по адресу . Этот файл конфигурации позволяет вам настроить параметры наблюдателя, и каждый параметр конфигурации содержит описание его назначения, поэтому обязательно внимательно изучите этот файл.config/telescope.php
При желании вы можете полностью отключить сбор данных телескопа, используя enabled
опцию конфигурации:
'enabled' => env('TELESCOPE_ENABLED', true),
Обрезка данных
Без сокращения telescope_entries
таблица может накапливать записи очень быстро. Чтобы смягчить это, вы должны запланировать ежедневное выполнение команды Artisan:telescope:prune
$schedule->command('telescope:prune')->daily();
По умолчанию все записи старше 24 часов будут удалены. Вы можете использовать эту hours
опцию при вызове команды, чтобы определить, как долго хранить данные телескопа. Например, следующая команда удалит все записи, созданные более 48 часов назад:
$schedule->command('telescope:prune --hours=48')->daily();
Авторизация панели инструментов
Телескоп выставляет приборную панель на /telescope
. По умолчанию вы сможете получить доступ к этой панели только в этой local
среде. В вашем файле есть метод. Этот шлюз авторизации контролирует доступ к телескопу в нелокальных средах. Вы можете изменять эти ворота по мере необходимости, чтобы ограничить доступ к установке вашего телескопа:app/Providers/TelescopeServiceProvider.php
gate
/**
* Register the Telescope gate.
*
* This gate determines who can access Telescope in non-local environments.
*
* @return void
*/
protected function gate()
{
Gate::define('viewTelescope', function ($user) {
return in_array($user->email, [
'taylor@laravel.com',
]);
});
}
Фильтрация
Записи
Вы можете фильтровать данные, которые записаны телескопом через filter
обратный вызов, который зарегистрирован в вашем TelescopeServiceProvider
. По умолчанию этот обратный вызов записывает все данные в local
среде и исключения, сбойные задания, запланированные задачи и данные с отслеживаемыми тегами во всех других средах:
/**
* Register any application services.
*
* @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
, все записи записываются телескопом:
use Illuminate\Support\Collection;
/**
* Register any application services.
*
* @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();
});
});
}
Tagging
Телескоп позволяет искать записи по «тегу». Зачастую тегами являются имена классов Eloquent модели или идентифицированные идентификаторы пользователей, которые Telescope автоматически добавляет к записям. Иногда вы можете прикрепить свои собственные теги к записям. Для этого вы можете использовать метод. Метод принимает функцию обратного вызова , который должен возвращать массив тегов. Теги, возвращаемые обратным вызовом, будут объединены с любыми тегами, которые телескоп автоматически прикрепит к записи. Вы должны вызвать метод в вашем :Telescope::tags
tags
tags
TelescopeServiceProvider
use Laravel\Telescope\Telescope;
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->hideSensitiveRequestDetails();
Telescope::tags(function (IncomingEntry $entry) {
if ($entry->type === 'request') {
return ['status:'.$entry->content['response_status']];
}
return [];
});
}
Доступные наблюдатели
Наблюдатели телескопа собирают данные приложения при выполнении запроса или консольной команды. Вы можете настроить список наблюдателей, которые вы хотели бы включить в свой файл конфигурации:config/telescope.php
'watchers' => [
Watchers\CacheWatcher::class => true,
Watchers\CommandWatcher::class => true,
...
],
Некоторые наблюдатели также позволяют предоставлять дополнительные параметры настройки:
'watchers' => [
Watchers\QueryWatcher::class => [
'enabled' => env('TELESCOPE_QUERY_WATCHER', true),
'slow' => 100,
],
...
],
Cache Watcher
Наблюдатель кеша записывает данные, когда ключ кеша удаляется, пропускается, обновляется и забывается.
Командный Наблюдатель
Наблюдатель команд записывает аргументы, параметры, код выхода и выходные данные при каждом выполнении команды Artisan. Если вы хотите исключить определенные команды от записи наблюдателем, вы можете указать команду в ignore
опции в вашем файле:config/telescope.php
'watchers' => [
Watchers\CommandWatcher::class => [
'enabled' => env('TELESCOPE_COMMAND_WATCHER', true),
'ignore' => ['key:generate'],
],
...
],
Дамп Наблюдатель
Наблюдатель дампов записывает и отображает ваши переменные дампы в Telescope. При использовании Laravel переменные могут быть сброшены с помощью глобальной dump
функции. Вкладка наблюдателя дампов должна быть открыта в браузере, чтобы запись происходила, иначе наблюдатели будут игнорировать дампы.
Наблюдатель за событиями
Наблюдатель событий записывает полезную нагрузку, прослушиватели и широковещательные данные для любых событий, отправляемых вашим приложением. Внутренние события фреймворка Laravel игнорируются наблюдателем событий.
Наблюдатель за исключениями
Наблюдатель исключений записывает данные и трассировку стека для любых регистрируемых исключений, которые выдает ваше приложение.
Gate Watcher
Наблюдатель от шлюза записывает данные и результаты проверок шлюза и политики вашим приложением. Если вы хотите исключить определенные способности от записи наблюдателем, вы можете указать их в ignore_abilities
опции в вашем файле:config/telescope.php
'watchers' => [
Watchers\GateWatcher::class => [
'enabled' => env('TELESCOPE_GATE_WATCHER', true),
'ignore_abilities' => ['viewNova'],
],
...
],
Наблюдатель за работой
Наблюдатель за работой записывает данные и состояние всех заданий, отправленных вашим приложением.
Log Watcher
Наблюдатель журналов записывает данные журналов для любых журналов, написанных вашим приложением.
Наблюдатель почты
Наблюдатель за электронной почтой позволяет просматривать предварительный просмотр электронных писем в браузере вместе с соответствующими данными. Вы также можете скачать письмо в виде .eml
файла.
Модель Watcher
Модель Watcher записи модель меняется всякий раз , когда Красноречивыми created
, updated
, restored
или deleted
отправляется событие. Вы можете указать, какие события модели должны быть записаны с помощью events
опции наблюдателя :
'watchers' => [
Watchers\ModelWatcher::class => [
'enabled' => env('TELESCOPE_MODEL_WATCHER', true),
'events' => ['eloquent.created*', 'eloquent.updated*'],
],
...
],
Наблюдатель уведомлений
Наблюдатель уведомлений записывает все уведомления, отправленные вашим приложением. Если уведомление вызывает сообщение электронной почты, и у вас включен наблюдатель за электронной почтой, сообщение также будет доступно для предварительного просмотра на экране наблюдателя за электронной почтой.
Query Watcher
Наблюдатель запросов записывает необработанный SQL, привязки и время выполнения для всех запросов, которые выполняются вашим приложением. Наблюдатель также помечает любые запросы медленнее, чем 100 мс slow
. Вы можете настроить медленный порог запроса, используя slow
опцию наблюдателя :
'watchers' => [
Watchers\QueryWatcher::class => [
'enabled' => env('TELESCOPE_QUERY_WATCHER', true),
'slow' => 50,
],
...
],
Redis Watcher
События Redis должны быть включены, чтобы наблюдатель Redis работал. Вы можете включить событие Redis путем вызова в методе вашего файла.
Redis::enableEvents()
boot
app/Providers/AppServiceProvider.php
Наблюдатель Redis записывает все команды Redis, выполненные вашим приложением. Если вы используете Redis для кэширования, команды кэширования также будут записываться Redis Watcher.
Запрос наблюдателя
Наблюдатель запросов записывает данные запроса, заголовков, сеанса и ответа, связанные с любыми запросами, обрабатываемыми приложением. Вы можете ограничить свои данные ответа с помощью size_limit
опции (в КБ):
'watchers' => [
Watchers\RequestWatcher::class => [
'enabled' => env('TELESCOPE_REQUEST_WATCHER', true),
'size_limit' => env('TELESCOPE_RESPONSE_SIZE_LIMIT', 64),
],
...
],
Расписание Watcher
Наблюдатель расписания записывает команды и выходные данные любых запланированных задач, выполняемых вашим приложением.
0 комментариев