如何配置Laravel Telescope以显示Livewire的查询与请求?
让Laravel Telescope显示Livewire的请求与数据库查询
Telescope默认会过滤掉Livewire组件发起的请求和查询,按以下步骤配置即可让它们显示出来:
1. 调整请求过滤规则
打开项目根目录下的config/telescope.php,找到filter回调函数。默认逻辑会在非本地环境下排除普通Livewire请求,我们需要修改它来包含Livewire请求:
'filter' => function (IncomingEntry $entry) { if ($this->app->environment('local')) { // 本地环境直接显示所有条目,包括Livewire请求 return true; } // 生产环境可按需调整,比如仅保留Livewire的异常/失败请求 return $entry->isReportableException() || $entry->isFailedRequest() || $entry->isFailedJob() || $entry->isScheduledTask() || $entry->hasMonitoredTag() || // 加入Livewire请求的判断 ($entry->type === 'request' && isset($entry->content['headers']['livewire'])); },
2. 取消Query监听器对Livewire的忽略
同样在config/telescope.php的watchers数组里,找到QueryWatcher配置项。如果ignore_packages里包含livewire/livewire,把这一项移除:
'QueryWatcher' => [ 'enabled' => env('TELESCOPE_QUERY_WATCHER', true), 'ignore_packages' => [ // 移除 'livewire/livewire'(如果存在的话) ], 'ignore_paths' => [], 'slow' => 100, ],
3. (可选)给Livewire请求打标签
如果想快速筛选Livewire相关条目,可以在app/Providers/TelescopeServiceProvider.php的register方法中添加标签逻辑:
use Laravel\Telescope\Telescope; use Laravel\Telescope\IncomingEntry; public function register() { Telescope::tag(function (IncomingEntry $entry) { if ($entry->type === 'request' && isset($entry->content['headers']['livewire'])) { return ['livewire']; } return []; }); }
配置完成后,刷新Telescope界面就能看到Livewire发起的请求和对应的数据库查询了。
内容的提问来源于stack exchange,提问作者Adrian Cornish
相关产品推荐
相关产品推荐

