gpt4 book ai didi

php - 如何使用 Guzzle 6 记录所有 API 调用

转载 作者:IT王子 更新时间:2023-10-28 23:59:35 25 4
gpt4 key购买 nike

我正在尝试使用 guzzle 6,它工作正常,但在如何记录所有 api 调用时我迷路了。我想简单地记录时间、 session 中的登录用户、url 以及与 API 调用有关的任何其他常见相关信息。我似乎找不到 Guzzle 6 的任何文档提到这个,只有 guzzle 3(他们改变了日志记录 addSubscriber 调用)。这就是我当前的 API 调用方式:

$client = new GuzzleHttp\Client(['defaults' => ['verify' => false]]);
$res = $client->get($this->url . '/api/details', ['form_params' => ['file' => $file_id]]);

最佳答案

您可以使用任何通过 Guzzle 6 实现 PSR-3 接口(interface)的记录器

在下面的示例中,我使用 Monolog 作为记录器和 Guzzle 的内置中间件以及 MessageFormatter。

use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use GuzzleHttp\MessageFormatter;
use Monolog\Logger;

$stack = HandlerStack::create();
$stack->push(
Middleware::log(
new Logger('Logger'),
new MessageFormatter('{req_body} - {res_body}')
)
);
$client = new \GuzzleHttp\Client(
[
'base_uri' => 'http://httpbin.org',
'handler' => $stack,
]
);

echo (string) $client->get('ip')->getBody();

关于日志中间件和消息格式化器的细节还没有很好的文档记录。但是你可以check the list您可以在 MessageFormatter 中使用哪些变量

还有一个guzzle-logmiddleware它允许您自定义格式化程序等。

关于php - 如何使用 Guzzle 6 记录所有 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32681165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com