/** * @inheritDoc */ public function format(RequestInterface $request, ResponseInterface $response = null, \Exception $error = null, array $customData = []) { if (in_array($request->getPath(), $this->paths)) { $customData = array_merge(['url' => $this->mask((string) $request->getUrl()), 'resource' => $this->mask($request->getResource()), 'request' => $this->mask((string) $request), 'response' => $this->mask((string) $response), 'res_body' => $response ? $this->mask((string) $response) : 'NULL', 'req_body' => $this->mask((string) $request->getBody())], $customData); } return parent::format($request, $response, $error, $customData); }
/** * @param RequestInterface $request * @return array ['query' => ..., 'request' => ...] */ protected function getRequestAndQuery(RequestInterface $request) { $query = []; foreach ($request->getQuery() as $param => $val) { $query[$param] = $val; } $requestInfo = ['url' => $request->getUrl(), 'path' => $request->getPath(), 'queryString' => (string) $request->getQuery(), 'method' => $request->getMethod(), 'hostname' => $request->getHost(), 'port' => $request->getPort(), 'resource' => $request->getResource()]; return ['query' => $query, 'request' => $requestInfo]; }
/** * Returns a formatted message * * @param RequestInterface $request Request that was sent * @param ResponseInterface $response Response that was received * @param \Exception $error Exception that was received * @param array $customData Associative array of custom template data * * @return string */ public function format(RequestInterface $request, ResponseInterface $response = null, \Exception $error = null, array $customData = array()) { $cache = $customData; $that = $this; return preg_replace_callback('/{\\s*([A-Za-z_\\-\\.0-9]+)\\s*}/', function (array $matches) use($request, $response, $error, &$cache, $that) { if (isset($cache[$matches[1]])) { return $cache[$matches[1]]; } $result = ''; switch ($matches[1]) { case 'request': $result = $request; break; case 'response': $result = $response; break; case 'req_headers': $result = trim($request->getMethod() . ' ' . $request->getResource()) . ' HTTP/' . $request->getProtocolVersion() . "\r\n" . $that->headers($request); break; case 'res_headers': $result = $response ? sprintf('HTTP/%s %d %s', $response->getProtocolVersion(), $response->getStatusCode(), $response->getReasonPhrase()) . "\r\n" . $that->headers($response) : 'NULL'; break; case 'req_body': $result = $request->getBody(); break; case 'res_body': $result = $response ? $response->getBody() : 'NULL'; break; case 'ts': $result = gmdate('c'); break; case 'method': $result = $request->getMethod(); break; case 'url': $result = $request->getUrl(); break; case 'resource': $result = $request->getResource(); break; case 'req_version': $result = $request->getProtocolVersion(); break; case 'res_version': $result = $response ? $response->getProtocolVersion() : 'NULL'; break; case 'host': $result = $request->getHost(); break; case 'hostname': $result = gethostname(); break; case 'code': $result = $response ? $response->getStatusCode() : 'NULL'; break; case 'phrase': $result = $response ? $response->getReasonPhrase() : 'NULL'; break; case 'error': $result = $error ? $error->getMessage() : 'NULL'; break; default: // handle prefixed dynamic headers if (strpos($matches[1], 'req_header_') === 0) { $result = $request->getHeader(substr($matches[1], 11)); } elseif (strpos($matches[1], 'res_header_') === 0) { $result = $response ? $response->getHeader(substr($matches[1], 11)) : 'NULL'; } } $cache[$matches[1]] = $result; return $result; }, $this->template); }
/** * Get context fields to add to the time-line entry. * * @param RequestInterface $request * @param ResponseInterface $response * @param Exception $error * * @return array */ protected function getParameters(RequestInterface $request, ResponseInterface $response = null, Exception $error = null) { $params = []; $keys = array_intersect($this->context, $this->availableParameters); foreach ($keys as $key) { switch ($key) { case 'request': $result = $request; break; case 'response': $result = $response; break; case 'method': $result = $request->getMethod(); break; case 'url': $result = $request->getUrl(); break; case 'resource': $result = $request->getResource(); break; case 'request_version': $result = $request->getProtocolVersion(); break; case 'response_version': $result = $response ? $response->getProtocolVersion() : 'NULL'; break; case 'host': $result = $request->getHost(); break; case 'hostname': $result = gethostname(); break; case 'status_code': $result = $response ? $response->getStatusCode() : 'NULL'; break; case 'phrase': $result = $response ? $response->getReasonPhrase() : 'NULL'; break; case 'error': $result = $error ? $error->getMessage() : 'NULL'; break; } $params[$key] = (string) $result ?: ''; } return $params; }