Laravel 框架的优雅调试助手 Laravel Telescope

介绍

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

安装

composer require laravel/telescope
php artisan telescope:install
php artisan migrate

Laravel 框架的优雅调试助手 Laravel Telescope

访问

直接访问 域名/telescope就可以看到 Telescope 的界面了。

Laravel 框架的优雅调试助手 Laravel Telescope

权限 403

  • 因项目在本地环境跑, APP_ENV=local,用户可以随便访问这个界面

  • 如果你使用 laravel 作为 api 应用程序 修改App\Providers\TelescopeServiceProvider.php

      /**
       * 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 $user) {
              #设置ip访问
              return in_array(request()->getClientIp(), [
                  'xx.xx.204.117',
              ]);
    //            return array_key_exists('secretTelescope', $_COOKIE);
    //            return in_array($user->email, [
    //                //
    //            ]);
          });
    
      }

数据查询监听

数据查询监听器记录应用程序执行的所有查询的原始 SQL、绑定和执行时间。观察者还将任何慢于 100 毫秒的查询标记为 slow。您可以使用观察者的 slow 选项自定义慢查询阈值:

'watchers' => [
    Watchers\QueryWatcher::class => [
        'enabled' => env('TELESCOPE_QUERY_WATCHER', true),
        'slow' => 3,
    ],
    ...
],

Laravel 框架的优雅调试助手 Laravel Telescope

关闭

'enabled' => env('TELESCOPE_ENABLED', false),

清理数据

如果没有清理的话,telescope_entries 表会迅速累积记录。要缓解这一现状,需要通过调度任务每天运行 Artisan 命令 telescope:prune 来清理老数据:

$schedule->command('telescope:prune')->daily();

默认情况下,所有 24 小时之前的数据都会被清理,你可以在运行上述命令的时候使用 hours 选项来决定要保存多长时间以内的 Telescope 数据。例如,下面这个命令将会删除所有 48 小时以前创建的数据:

$schedule->command('telescope:prune --hours=48')->daily();

修改夜间模式

Laravel 框架的优雅调试助手 Laravel Telescope

结束语

更多技巧可以查看
官方文档
Telescope 调试工具
Useful Laravel Packages

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!