Я пытаюсь использовать 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]]);
Вы можете использовать любой регистратор, который реализует интерфейс 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 который позволяет настроить форматтер и т. д.
@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}')
));