/** * @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)); }
/** * 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); }
/** * {@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; } }
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; } }; }
/** * 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); }
/** * 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); }