laravel telescope如何记录其它插件的http请求
laravel telescope如何记录其它插件的http请求
比如我在项目中安装了overtrue/wechat包,包中封装了微信的各种请求方法,如何把这些请求记录记录到telescope中,就像直接使用 Laravel自带的Http类一样.
使用laravel自带Http请求
public function access_token()
{
$cache_name = "mini_access_token";
$access_token = Cache::get($cache_name);
if (!$access_token) {
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->secret}";
$res = Http::get($url)->json();
$access_token = $res["access_token"];
Cache::put("mini_access_token", $access_token, $res["expires_in"]);
}
return $access_token;
}
请求会自动记录到telescope
HTTP Client 中,如果项目有其它第三方包封装了http请求,telescope
无法记录到请求,如何实现在telescope
中记录所有第三方包的请求记录
如果你只想在代码中记录 HTTP 请求,你可以使用 Laravel 的事件系统。当应用程序发送 HTTP 请求时,你可以触发一个事件,将请求发送到一个事件监听器中,然后在监听器中记录请求的详细信息。
首先,你需要在应用程序中定义一个事件。你可以在
app/Providers/EventServiceProvider.php
文件中注册该事件:然后,你需要定义
App\Events\HttpRequestSent
事件类,该类应该包含发送的请求的详细信息。你可以在事件类中添加一个$request
属性来存储请求:接下来,你需要定义一个事件监听器,它将接收
HttpRequestSent
事件,并记录请求的详细信息。你可以在app/Listeners/LogHttpRequest.php
文件中定义该监听器:最后,当你想要记录 HTTP 请求时,你可以在你的代码中触发
HttpRequestSent
事件:这将触发
HttpRequestSent
事件,并将请求对象发送到LogHttpRequest
监听器中。在监听器中,请求的详细信息将被记录到日志文件中。这个可能是你需要的: telescope-guzzle-watcher
或者参考这个文章:telescope-log-guzzle-outgoing-requests
其实,正常来说,不管是用什么方式发起的请求,你都应该记录下日志,而不是依赖 telescope 吧,,,