Laravel Telescope [转译自laravel官网]

个人站点

介绍

Laravel Telescope 是 Laravel 框架的优雅调试助手。Telescope 可深入了解进入应用程序的请求,异常,日志条目,数据库查询,排队作业,邮件,通知,缓存操作,计划任务,变量转储等。Telescope 是您本地 Laravel 开发环境的绝佳伴侣。

Laravel Telescope [转译自laravel官网]


安装

注意 Telescope 需要 Laravel 5.7.7+。你可以通过 php artisan version 查看自己的 Laravel 版本

您可以使用 ComposerTelescope 安装到 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 服务提供者的注册。手动在 AppServiceProviderregister 方法中注册它:

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 WatcherTelescope 中记录和显示您的变量转储。在使用 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.phpboot 方法中调用 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 记录应用程序运行的任何计划任务的命令和输出。


算是自己的处女座翻译了,第一次翻译外文文档,如有错误,望斧正!
点击访问英文文档