Laravel Telescope [转译自laravel官网]
介绍
Laravel Telescope 是 Laravel 框架的优雅调试助手。Telescope 可深入了解进入应用程序的请求,异常,日志条目,数据库查询,排队作业,邮件,通知,缓存操作,计划任务,变量转储等。Telescope 是您本地 Laravel 开发环境的绝佳伴侣。
安装
注意 Telescope
需要 Laravel 5.7.7+
。你可以通过 php artisan version
查看自己的 Laravel
版本
您可以使用 Composer
将 Telescope
安装到 Laravel
项目中:
composer require laravel/telescope
安装 Telescope
后,使用 Artisan
命令发布其资产。安装 Telescope
后,您还应该运行命令:telescope:installmigrate
php artisan telescope:install
php artisan migrate
更新 Telescope
更新 Telescope
时,您应该重新发布 Telescope
的公共资源:
php artisan telescope:publish
仅在特定环境中安装
如果您打算仅使用 Telescope
来协助您的本地开发。您可以使用 --dev
标志安装 Telescope
:
composer require laravel/telescope --dev
安装完成后,需要从 config/app.php
配置文件中移除 TelescopeServiceProvider
服务提供者的注册。手动在 AppServiceProvider
的 register
方法中注册它:
use Laravel\Telescope\TelescopeServiceProvider::class;
/**
* Register any application services.
*
* @return void
*/
public function register()
{
if ($this->app->isLocal()) {
$this->app->register(TelescopeServiceProvider::class);
}
}
配置
发布 Telescope
公共资源后,其主要配置文件将位于 config/telescope.php
。此配置文件允许您监听其选项 watchers
,每个配置选项都包含其用途说明,因此请务必彻底浏览此文件。
如果需要,您可以使用 enabled 配置选项完全禁用 Telescope 的数据收集:
'enabled' => env('TELESCOPE_ENABLED', true),
数据清理
如果不进行清理,telescope_entries
表格可以非常快速地累积记录。要缓解这种情况,您应该安排 Artisan
命令每天运行:telescope:prune
$schedule->command('telescope:prune')->daily();
默认情况下,将清理超过 24 小时的所有数据。您可以通过 hours
选项在调用命令时来确定保留 Telescope
数据的时间。例如,以下命令将删除 48 小时前创建的所有记录:
$schedule->command('telescope:prune --hours=48')->daily();
后台授权
Telescope
可以通过 /telescope
访问。默认情况下,您只能在本地开发环境(local
)中进行访问。在您的app/Providers/TelescopeServiceProvider.php
文件中,有一种 gate
方法。此授权门控制在非本地环境中对 Telescope
的访问。您可以根据需要随意修改此门,以限制对 Telescope
安装的访问:
/**
* 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, [
'[email protected]',
]);
});
}
过滤
您可以通过 filter
在您的 TelescopeServiceProvider
中注册的回调来过滤 Telescope
记录的数据。默认情况下,此回调记录本地环境中(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
,则 Telescope
将记录所有条目
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();
});
});
}
Available Watchers(可用的监视器)
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,
],
...
],
Cache Watcher(缓存监视器)
当缓存键被命中、丢失、更新和忘记时,Cache Watcher
将记录数据。
Command Watcher(命令监视器)
每当执行 Artisan
命令时,Command Watcher
都会记录参数、选项、退出代码和输出。如果您想要排除某些命令不被 Watcher
记录,您可以在 config/telescope.php
文件中的 ignore
选项中指定该命令
'watchers' => [
Watchers\CommandWatcher::class => [
'enabled' => env('TELESCOPE_COMMAND_WATCHER', true),
'ignore' => ['key:generate'],
],
...
],
Dump Watcher(转储监视器)
Dump Watcher
在 Telescope
中记录和显示您的变量转储。在使用 Laravel
时,可以使用全局函数 dump
转储变量。dump watcher
选项卡必须在浏览器中打开才能进行记录,否则,转储将被 watcher
忽略。
Event Watcher(事件监视器)
Event Watcher
记录应用程序调度的任何事件的有效负载,侦听器和广播数据。Event Watcher
忽略了 Laravel
框架的内部事件。
Exception Watcher(异常监视器)
Exception Watcher
记录应用程序引发的任何可报告异常的数据和堆栈跟踪。
Gate Watcher (出入口监视器)
Gate Watcher
记录您的应用程序的 gate 和策略检查的数据和结果。如果您想要排除某些功能而不被 Watcher
记录,您可以在您的 config/telescope.php
文件中的 ignore_abilities
选项中指定这些功能
'watchers' => [
Watchers\GateWatcher::class => [
'enabled' => env('TELESCOPE_GATE_WATCHER', true),
'ignore_abilities' => ['viewNova'],
],
...
],
Job Watcher(作业监视器)
Job Watcher
记录应用程序分派的任何作业的数据和状态。
Log Watcher(日志监视器)
Log Watcher
记录应用程序编写的任何日志的日志数据。
Mail Watcher(邮件监视器)
Mail Watcher
允许您查看电子邮件的浏览器内预览及其相关数据。您也可以将电子邮件下载为.eml文件。
Model Watcher(模型监视器)
每当一个模型的创建、更新、恢复或删除事件被分派时,模型监视器就会记录模型的变更。您可以通过监视器的 events
选项指定应记录哪些模型事件
'watchers' => [
Watchers\ModelWatcher::class => [
'enabled' => env('TELESCOPE_MODEL_WATCHER', true),
'events' => ['eloquent.created*', 'eloquent.updated*'],
],
...
],
Notification Watcher(通知监视器)
Notification Watcher
记录您的应用程序发送的所有通知。如果通知触发了电子邮件并且您启用了邮件监视器,则电子邮件也可以在邮件监视器屏幕上进行预览。
Query Watcher(查询监视器)
Query Watcher
记录应用程序执行的所有查询的原始 SQL,绑定(bindings)和执行时间(execution time)。Watcher
还标记任何慢于100毫秒的查询 slow
。您可以使用观察者 slow
选项自定义慢查询阈值:
'watchers' => [
Watchers\QueryWatcher::class => [
'enabled' => env('TELESCOPE_QUERY_WATCHER', true),
'slow' => 50,
],
...
],
Redis Watcher(Redis 监视器)
必须启用 Redis
事件才能使 Redis Watcher
正常工作。您可以通过在 app/Providers/AppServiceProvider.php
的 boot
方法中调用 Redis::enableEvents()
来启用 Redis
事件。
Redis Watcher
记录您的应用程序执行的所有 Redis
命令。如果您使用 Redis
进行缓存,Redis Watcher
也会记录缓存命令。
Request Watcher(请求监视器)
Request Watcher
记录与应用程序处理的任何请求相关联的请求,标头,会话和响应数据。您可以通过 size_limit
(以KB为单位)选项限制响应数据:
'watchers' => [
Watchers\RequestWatcher::class => [
'enabled' => env('TELESCOPE_REQUEST_WATCHER', true),
'size_limit' => env('TELESCOPE_RESPONSE_SIZE_LIMIT', 64),
],
...
],
Schedule Watcher(计划监视器)
schedule watcher
记录应用程序运行的任何计划任务的命令和输出。
算是自己的处女座翻译了,第一次翻译外文文档,如有错误,望斧正!
点击访问英文文档