Как вы регистрируете все вызовы API с помощью Guzzle 6

Я пытаюсь использовать guzzle 6, который работает нормально, но я теряюсь, когда дело доходит до того, как регистрировать все вызовы API. Я хотел бы просто зарегистрировать время, войдя в систему пользователя из сессии, 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]]);

12

Решение

Вы можете использовать любой регистратор, который реализует интерфейс PSR-3 с Guzzle 6.

Я использовал 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();

Подробная информация о промежуточном программном обеспечении журнала и модуле форматирования сообщений еще недостаточно документирована. Но вы можете проверить список какие переменные вы можете использовать в MessageFormatter

Также есть Жрать-logmiddleware который позволяет настроить форматтер и т. д.

34

Другие решения

@KingKongFrog Это способ указать имя файла журнала

$logger = new Logger('MyLog');
$logger->pushHandler(new StreamHandler(__DIR__ . '/test.log'), Logger::DEBUG);

$stack->push(Middleware::log(
$logger,
new MessageFormatter('{req_body} - {res_body}')
));
2

По вопросам рекламы [email protected]