2015-09-20 17 views
9

Sto provando a usare guzzle 6 che funziona bene ma sono perso quando si tratta di registrare tutte le chiamate API. Vorrei semplicemente registrare i tempi, l'utente connesso da sessione, l'url e qualsiasi altra informazione pertinente che abbia a che fare con la chiamata API. Non riesco a trovare alcuna documentazione per Guzzle 6 che si riferisce a questo, solo guzzle 3 (dove hanno cambiato la chiamata addSubscriber di registrazione). Ecco come il mio chiamate API attuali sono:Come registrare tutte le chiamate API usando Guzzle 6

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

risposta

29

È possibile utilizzare qualsiasi logger che implementa l'interfaccia PSR-3 con Guzzle 6

ho usato Monolog come logger e middleware integrato di Guzzle con MessageFormatter in seguito esempio.

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

I dettagli sul middleware del registro e sul formattatore del messaggio non sono ancora ben documentati. Ma si può check the list quali variabili è possibile utilizzare in MessageFormatter

Inoltre v'è un guzzle-logmiddleware, che consente di personalizzare formattatore ecc

+0

Dove si specifica il nome del file di registro in questo codice? Grazie per aver postato questo! – KingKongFrog

+0

Non ho impostato il gestore nell'esempio. Puoi scegliere il tipo di gestore che utilizzerai nel registratore. Se vuoi registrare i tuoi messaggi su file, devi selezionare StreamHandler. [controllare la documentazione di monolog] (https://github.com/Seldaek/monolog/blob/master/doc/02-handlers-formatters-processors.md#handlers) per altre opzioni. È possibile passare il gestore durante la creazione di Logger o impostarlo dopo tramite il metodo 'pushHandler'. controlla questo [esempio] (https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#configuring-a-logger) @KingKongFrog – velioglu

+0

Beautiful @Velioglu – KingKongFrog

0

@KingKongFrog Questo è il modo per specificare il nome del file di log

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

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