2015-09-20 5 views
9

Я пытаюсь использовать guzzle 6, который отлично работает, но я теряюсь, когда речь идет о регистрации всех вызовов api. Я хотел бы просто записать время, войти в систему из сеанса, url и любой другой обычной информации, связанной с вызовом API. Кажется, я не могу найти документацию для Guzzle 6, которая ссылается на это, только жужжание 3 (где они изменили вызов logging addSubscriber). Это как мои текущие вызовы API являются:Как вы регистрируете все вызовы API с помощью Guzzle 6

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

ответ

29

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

Я использовал Монолог в качестве регистратора и встроено промежуточного слоя из жрать с 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, который позволяет настроить форматтера и т.д.

+0

Где вы указываете имя файла журнала в этом коде? Спасибо, что опубликовали это! – KingKongFrog

+0

Я не установил обработчик в примере. Вы можете выбрать, какой обработчик вы будете использовать в журнале. Если вы хотите зарегистрировать свои сообщения в файл, вы должны выбрать StreamHandler. [проверьте документацию по монологу] (https://github.com/Seldaek/monolog/blob/master/doc/02-handlers-formatters-processors.md#handlers) для других параметров. Вы можете передать обработчик при создании Logger или установить его после метода 'pushHandler'. проверьте это [пример] (https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#configuring-a-logger) @KingKongFrog – velioglu

+0

Красивый @Velioglu – KingKongFrog

0

@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}') 
)); 
Смежные вопросы