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

Я пытаюсь использовать guzzle 6, который отлично работает, но я теряюсь, когда дело доходит до регистрации всех вызовов api. Я хотел бы просто записать время, войти в систему из сеанса, url и любой другой обычной информации, связанной с вызовом API. Кажется, я не могу найти какую-либо документацию для Guzzle 6, которая ссылается на это, только жужжание 3 (где они изменили вызов logging 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

Я использовал Монолог как регистратор и встроенное промежуточное ПО 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

Также есть утилита для рисования, которая позволяет настраивать форматирование и т. Д.

@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}') ));