コード例 #1
0
/**
 * Log given HTTP request.
 *
 * @param array $request request data
 * @param array $response response data
 * @return void
 */
	public function logRequest($request, $response) {
		$this->_requestCnt++;
		$this->_requestTime += $this->took;
		$separator = '[**snip**]';
		$maxlength = $this->_requestLogLimitBytes - strlen($separator);

		$requestUri = $this->Http->url($request['uri']);
		$requestBody = $this->Http->request['body'];
		$responseBody = $this->Http->response['body'];
		if (strlen($requestBody) > $this->_requestLogLimitBytes) {
			$requestBody = substr_replace($requestBody, $separator, $maxlength / 2, strlen($requestBody) - $maxlength);
		}
		if (strlen($responseBody) > $this->_requestLogLimitBytes) {
			$responseBody = substr_replace($responseBody, $separator, $maxlength / 2, strlen($responseBody) - $maxlength);
		}
		$this->_requestLog[] = array(
			'request_method' => $this->Http->request['method'],
			'request_uri' => $requestUri,
			'request_body' => h($requestBody),
			'response_code' => $this->Http->response['status']['code'],
			'response_type' => $this->Http->response->getHeader('Content-Type'),
			'response_size' => strlen($this->Http->response['body']),
			'response_body' => h($responseBody),
			'query' => $this->Http->request['method'] . ' ' . $requestUri,
			'params' => '',
			'error' => '',
			'affected' => '',
			'numRows' => strlen($this->Http->response['body']),
			'took' => $this->took
		);
		if (count($this->_requestLog) > $this->_requestLogMax) {
			array_pop($this->_requestLog);
		}
	}