2015-09-20 30 views
9

Próbuję użyć trybu 6, który działa dobrze, ale jestem zagubiony, jeśli chodzi o rejestrowanie wszystkich wywołań interfejsu API. Chciałbym po prostu zarejestrować czas, logować użytkownika z sesji, adres URL i inne zwykłe istotne informacje, które mają związek z wywołaniem API. Nie mogę znaleźć żadnej dokumentacji dla Guzzle 6, która się do tego odnosi, tylko guzzle 3 (gdzie zmienili wywołanie logowania addSubscriber). To jest jak moje obecne wywołania API to:Jak rejestrować wszystkie wywołania API przy użyciu Guzzle 6

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

Odpowiedz

29

Można użyć dowolnego rejestratora, który implementuje PSR-3 interfejs chlać 6

użyłem Monolog jako rejestrator i wbudowanego oprogramowania pośredniczącego z chlać z MessageFormatter w poniższym przykładzie.

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(); 

Szczegóły dotyczące oprogramowania pośredniego logowania i formaterów wiadomości nie są jeszcze dobrze udokumentowane. Ale można check the list które zmienne można wykorzystać w MessageFormatter

Jest tam również guzzle-logmiddleware który pozwala dostosować formatyzatora itp

+0

Gdzie podajesz nazwę pliku logu w tym kodzie? Dzięki za zamieszczenie tego! – KingKongFrog

+0

Nie ustawiłem obsługi w przykładzie. Możesz wybrać rodzaj programu obsługi, który będziesz używać w programie rejestrującym. Jeśli chcesz logować swoje wiadomości do pliku, powinieneś wybrać StreamHandler. [sprawdź dokumentację monologiczną] (https://github.com/Seldaek/monolog/master/master/doc/02-handlers-formatters-processors.md#handlers) w celu uzyskania innych opcji. Możesz przekazać program obsługi podczas tworzenia Logger lub ustawić go za pomocą metody 'pushHandler'. sprawdź ten [przykład] (https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#configuring-a-logger) @KingKongFrog – velioglu

+0

Beautiful @Velioglu – KingKongFrog

0

@KingKongFrog Jest to sposób, aby określić nazwę pliku dziennika

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

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