Laravel Telescope - 在“请求”面板中仅记录错误状态

时间:2021-04-08 14:36:50

标签: laravel laravel-telescope

在 Laravel Telescope 调试工具的“请求”面板中,有没有办法只记录一些请求,而不是所有请求?

例如,除了状态为 200302 的请求之外的所有请求。

我试图修改 config/telescope.php 文件,尤其是那部分

Watchers\RequestWatcher::class => [
    'enabled' => env('TELESCOPE_REQUEST_WATCHER', true),
    'size_limit' => env('TELESCOPE_RESPONSE_SIZE_LIMIT', 64),
]

但我没有找到任何关于页面状态的选项。

我也尝试修改 TelescopeServiceProvider.php 文件,register() 方法但没有成功。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

Telescope 允许您通过“标签”搜索条目。通常,标签是 Eloquent 模型类名称或经过身份验证的用户 ID,Telescope 会自动添加到条目中。有时,您可能希望将自己的自定义标签附加到条目。为此,您可以使用 Telescope::tag 方法。 tag 方法接受一个应该返回一个标签数组的闭包。闭包返回的 tags 将与 Telescope 自动附加到条目的任何标签合并。通常,您应该在 tag 类的 register 方法中调用 App\Providers\TelescopeServiceProvider 方法:

use Laravel\Telescope\IncomingEntry;
use Laravel\Telescope\Telescope;

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
    $this->hideSensitiveRequestDetails();

    Telescope::tag(function (IncomingEntry $entry) {
        return $entry->type == 'request' && $entry->content['response_status'] == 302) ;
    });
 }

您也可以使用 filter 方法代替标记来执行相同的操作。

答案 1 :(得分:1)

感谢@MrEduar,我能够以这种方式做到这一点:

Telescope::filter(function (IncomingEntry $entry) {
    if($entry->type == 'request' && !in_array($entry->content['response_status'], [200, 302])){
        return true;
    }else {
        return $entry->isReportableException() ||
            $entry->isFailedRequest() ||
            $entry->isFailedJob() ||
            $entry->isScheduledTask() ||
            $entry->hasMonitoredTag();
    }
});