public function formatContext(CM_Log_Context $context) { $result = []; if ($computerInfo = $context->getComputerInfo()) { $result['computerInfo'] = ['fqdn' => $computerInfo->getFullyQualifiedDomainName(), 'phpVersion' => $computerInfo->getPhpVersion()]; } $request = $context->getHttpRequest(); if (null !== $request) { $serverArray = $request->getServer(); $formattedRequest = ['uri' => $request->getUri(), 'method' => $request->getMethodName()]; $query = $request->findQuery(); unset($query['viewInfoList']); $formattedRequest['query'] = CM_Util::jsonEncode($query, true); if (array_key_exists('http_referer', $serverArray)) { $formattedRequest['referer'] = (string) $serverArray['http_referer']; } if (array_key_exists('http_user_agent', $serverArray)) { $formattedRequest['useragent'] = (string) $serverArray['http_user_agent']; } if ($ip = $request->getIp()) { $formattedRequest['ip'] = (string) $ip; } if ($request->hasHeader('host')) { $formattedRequest['hostname'] = $request->getHost(); } $result['httpRequest'] = $formattedRequest; } $result = array_merge($result, $this->formatAppContext($context)); if ($exception = $context->getException()) { $serializableException = new CM_ExceptionHandling_SerializableException($exception); $stack = $serializableException->getTrace(); if (!empty($stack)) { $stackAsString = trim(Functional\reduce_left(array_reverse($stack), function ($value, $index, $collection, $reduction) { return $reduction . '#' . $index . ' ' . $value['file'] . '(' . $value['line'] . '): ' . $value['code'] . PHP_EOL; }, '')); } else { $stackAsString = $serializableException->getTraceAsString(); } $result['exception'] = ['type' => $serializableException->getClass(), 'message' => $serializableException->getMessage(), 'stack' => $stackAsString, 'metaInfo' => $serializableException->getMeta()]; } return $result; }
/** * @param CM_Log_Context $context */ public function merge(CM_Log_Context $context) { if ($computerInfo = $context->getComputerInfo()) { $this->setComputerInfo($computerInfo); } if ($httpRequest = $context->getHttpRequest()) { $this->setHttpRequest($httpRequest); } if ($getUserClosure = $context->_getUserClosure) { $this->setUserWithClosure($getUserClosure); } if ($exception = $context->getException()) { $this->setException($exception); } $extra = array_merge($this->getExtra(), $context->getExtra()); $this->setExtra($extra); }