2015-09-20 9 views
9

Ich versuche, guzzle 6 zu verwenden, die gut funktioniert, aber ich bin verloren, wenn es darum geht, alle API-Anrufe zu protokollieren. Ich möchte einfach Timing, eingeloggten Benutzer von Sitzung, URL und alle anderen üblichen relevanten Informationen, die mit dem API-Aufruf zu tun haben, protokollieren. Ich kann nicht scheinen, irgendeine Dokumentation für Guzzle 6 zu finden, das sich auf dieses bezieht, nur guzzle 3 (Wo sie den logging addSubscriber Anruf geändert haben). Dies ist, wie meine aktuellen API-Aufrufe sind:Wie protokolliert man alle API-Aufrufe mit Guzzle 6

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

Antwort

29

Sie können jeden Logger verwenden, die PSR-3-Schnittstelle mit Guzzle implementiert 6

I verwendet Monolog als Logger und builtin Middleware von Guzzle mit MessageFormatter im Beispiel unten.

Die Details über die Protokoll-Middleware und Nachrichtenformatierung sind noch nicht gut dokumentiert Aber Sie können check the list welche Variablen können Sie in MessageFormatter verwenden

Auch ein guzzle-logmiddleware ist, die Sie Formatter usw.

+0

Wo geben Sie den Namen der Protokolldatei in diesem Code an? Danke für das Posten! – KingKongFrog

+0

Ich habe den Handler in Beispiel nicht festgelegt. Sie können auswählen, welche Art von Handler Sie im Logger verwenden möchten. Wenn Sie Ihre Nachrichten in einer Datei protokollieren möchten, sollten Sie StreamHandler auswählen. [überprüfen Sie die Monolog-Dokumentation] (https://github.com/Seldaek/monolog/blob/master/doc/02-handlers-formatters-processors.md#handlers) für andere Optionen. Sie können den Handler beim Erstellen von Logger übergeben oder über die 'pushHandler'-Methode festlegen. überprüfen Sie dies [Beispiel] (https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#configuring-a-logger) @KingKongFrog – velioglu

+0

Schöne @Velioglu – KingKongFrog

0

@KingKongFrog anpassen können Dies ist die Möglichkeit, den Namen der Protokolldatei angeben

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

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