/**
  * @dataProvider dateProvider
  */
 public function testFormatsTimestamps($format, $pattern)
 {
     $f = new MessageFormatter($format);
     $request = new Request('GET', '/');
     $result = $f->format($request);
     $this->assertEquals(1, preg_match($pattern, $result));
 }
 /**
  * @dataProvider errorRequestsProvider
  */
 public function testGetErrorRequests(array $logs, $expected)
 {
     $this->logAdapter->expects($this->once())->method('getLogs')->willReturn($logs);
     $this->requestFormatter->expects($this->atMost(count($logs)))->method('format');
     $this->responseFormatter->expects($this->atMost(count($logs)))->method('format');
     $response = $this->getMockBuilder('Symfony\\Component\\HttpFoundation\\Response')->getMock();
     $request = $this->getMockBuilder('Symfony\\Component\\HttpFoundation\\Request')->getMock();
     $this->dataCollector->collect($request, $response);
     $this->assertCount($expected, $this->dataCollector->getErrorRequests());
 }
 /**
  * Formats a request and response as a log message.
  *
  * @param RequestInterface $request
  * @param ResponseInterface|null $response
  * @param mixed $reason
  *
  * @return string The formatted message.
  */
 protected function getLogMessage(RequestInterface $request, ResponseInterface $response = null, $reason = null)
 {
     if ($this->formatter instanceof MessageFormatter) {
         return $this->formatter->format($request, $response, $reason);
     }
     return call_user_func($this->formatter, $request, $response, $reason);
 }
 private static function create500Decider(LoggerInterface $logger, $maxRetries)
 {
     return function ($retries, RequestInterface $request, ResponseInterface $response = null, $error = null) use($maxRetries, $logger) {
         if ($retries >= $maxRetries) {
             return false;
         } elseif ($response && in_array($response->getStatusCode(), array(500))) {
             if (!$request->hasHeader('X-Orchestrator-Poll')) {
                 return false;
             }
             $formatter = new MessageFormatter('[{ts}] {method} {url} - {code} {phrase}');
             $delay = MiddlewareBuilder::createDefaultDelay();
             $logger->log(LogLevel::INFO, sprintf('%s - Retries: %s, Delay: %s s', $formatter->format($request, $response, $error), $retries + 1, $delay($retries) / 1000));
             return true;
         } elseif ($error) {
             return false;
         } else {
             return false;
         }
     };
 }
 /**
  * {@inheritdoc}
  */
 public function collect(Request $request, Response $response, \Exception $exception = null)
 {
     foreach ($this->logAdapter->getLogs() as $log) {
         $requestId = spl_object_hash($log['extras']['request']);
         if (isset($this->data['requests'][$requestId])) {
             continue;
         }
         /** @var RequestInterface $guzzleRequest */
         $guzzleRequest = $log['extras']['request'];
         /** @var ResponseInterface $guzzleResponse */
         $guzzleResponse = $log['extras']['response'];
         $datum['message'] = $log['message'];
         $datum['time'] = $log['extras']['time'];
         $datum['request'] = $this->requestFormatter->format($guzzleRequest);
         $datum['response'] = $this->responseFormatter->format($guzzleRequest, $guzzleResponse);
         $datum['is_error'] = $this->isError($guzzleResponse);
         $datum['status_code'] = $guzzleResponse->getStatusCode();
         $datum['method'] = $guzzleRequest->getMethod();
         $this->data['requests'][$requestId] = $datum;
     }
 }
 /**
  * Returns a formatted message string.
  *
  * @param RequestInterface $request Request that was sent
  * @param ResponseInterface $response Response that was received
  * @param \Exception $error Exception that was received
  *
  * @return string
  */
 public function format(RequestInterface $request, ResponseInterface $response = null, \Exception $error = null)
 {
     $message = parent::format($request, $response, $error);
     $patterns = [];
     $replacements = [];
     $patterns[] = '/(<password[^>]*>)(.*?)(<\\/password>)/i';
     $replacements[] = '$1REDACTED$3';
     $patterns[] = '/(<accountnumber[^>]*>)(.*?)(<\\/accountnumber>)/i';
     $replacements[] = '$1REDACTED$3';
     $patterns[] = '/(<cardnum[^>]*>)(.*?)(<\\/cardnum>)/i';
     $replacements[] = '$1REDACTED$3';
     $patterns[] = '/(<ssn[^>]*>)(.*?)(<\\/ssn>)/i';
     $replacements[] = '$1REDACTED$3';
     $patterns[] = '/(<achaccountnumber[^>]*>)(.*?)(<\\/achaccountnumber>)/i';
     $replacements[] = '$1REDACTED$3';
     $patterns[] = '/(<wireaccountnumber[^>]*>)(.*?)(<\\/wireaccountnumber>)/i';
     $replacements[] = '$1REDACTED$3';
     $patterns[] = '/(<taxid[^>]*>)(.*?)(<\\/taxid>)/i';
     $replacements[] = '$1REDACTED$3';
     return preg_replace($patterns, $replacements, $message);
 }
Esempio n. 7
0
 /**
  * Middleware that logs requests, responses, and errors using a message
  * formatter.
  *
  * @param LoggerInterface  $logger Logs messages.
  * @param MessageFormatter $formatter Formatter used to create message strings.
  * @param string           $logLevel Level at which to log requests.
  *
  * @return callable Returns a function that accepts the next handler.
  */
 public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = LogLevel::INFO)
 {
     return function (callable $handler) use($logger, $formatter, $logLevel) {
         return function ($request, array $options) use($handler, $logger, $formatter, $logLevel) {
             return $handler($request, $options)->then(function ($response) use($logger, $request, $formatter, $logLevel) {
                 $message = $formatter->format($request, $response);
                 $logger->log($logLevel, $message);
                 return $response;
             }, function ($reason) use($logger, $request, $formatter) {
                 $response = $reason instanceof RequestException ? $reason->getResponse() : null;
                 $message = $formatter->format($request, $response, $reason);
                 $logger->notice($message);
                 return \GuzzleHttp\Promise\rejection_for($reason);
             });
         };
     };
 }
 /**
  * Formats a request and response as a log message.
  *
  * @param Request $request
  * @param array $bundle
  * @param string $event
  *
  * @return string The formatted message.
  */
 protected function getLogMessage(Request $request, array $bundle, $event)
 {
     $template = $this->prepareTemplate(['event' => $event, 'expires' => $bundle['expires'] - time()]);
     $response = $bundle['response'];
     $formatter = new MessageFormatter($template);
     return $formatter->format($request, $response);
 }