logger = $logger instanceof LoggerInterface ? $logger : new SimpleLogger($logger); $this->formatter = $formatter instanceof Formatter ? $formatter : new Formatter($formatter); } public function getEvents() { return [ // Fire after responses are verified (which trigger error events). 'complete' => ['onComplete', RequestEvents::VERIFY_RESPONSE - 10], 'error' => ['onError', RequestEvents::EARLY] ]; } public function onComplete(CompleteEvent $event) { $this->logger->log( substr($event->getResponse()->getStatusCode(), 0, 1) == '2' ? LogLevel::INFO : LogLevel::WARNING, $this->formatter->format( $event->getRequest(), $event->getResponse() ), [ 'request' => $event->getRequest(), 'response' => $event->getResponse() ] ); } public function onError(ErrorEvent $event) { $ex = $event->getException(); $this->logger->log( LogLevel::CRITICAL, $this->formatter->format( $event->getRequest(), $event->getResponse(), $ex ), [ 'request' => $event->getRequest(), 'response' => $event->getResponse(), 'exception' => $ex ] ); } }