17 use Psr\Log\LoggerAwareInterface;
18 use Psr\Log\LoggerAwareTrait;
69 if (in_array($exception->getCode(), self::IGNORED_EXCEPTION_CODES,
true)) {
72 $filePathAndName = $exception->getFile();
73 $exceptionCodeNumber = $exception->getCode() > 0 ?
'#' . $exception->getCode() .
': ' :
'';
74 $logTitle =
'Core: Exception handler (' . $context .
')';
75 $logMessage =
'Uncaught TYPO3 Exception: ' . $exceptionCodeNumber . $exception->getMessage() .
' | '
76 . get_class($exception) .
' thrown in file ' . $filePathAndName .
' in line ' . $exception->getLine();
77 if ($context ===
'WEB') {
78 $logMessage .=
'. Requested URL: ' . $this->
anonymizeToken(GeneralUtility::getIndpEnv(
'TYPO3_REQUEST_URL'));
85 $this->logger->critical($logTitle .
': ' . $logMessage, [
86 'TYPO3_MODE' => TYPO3_MODE,
87 'exception' => $exception
91 $this->
writeLog($logTitle .
': ' . $logMessage);
103 $connection = GeneralUtility::makeInstance(ConnectionPool::class)
104 ->getConnectionForTable(
'sys_log');
106 if (!$connection->isConnected()) {
113 if (is_object($backendUser)) {
114 if (isset($backendUser->user[
'uid'])) {
115 $userId = $backendUser->user[
'uid'];
117 if (isset($backendUser->workspace)) {
118 $workspace = $backendUser->workspace;
120 if (!empty($backendUser->user[
'ses_backuserid'])) {
121 $data[
'originalUser'] = $backendUser->user[
'ses_backuserid'];
133 'details' => str_replace(
'%',
'%%', $logMessage),
134 'log_data' => empty($data) ?
'' : serialize($data),
135 'IP' => (
string)GeneralUtility::getIndpEnv(
'REMOTE_ADDR'),
137 'workspace' => $workspace
150 if (method_exists($exception,
'getStatusHeaders')) {
151 $headers = $exception->getStatusHeaders();
155 if (!headers_sent()) {
156 foreach ($headers as $header) {
178 $pattern =
'/(?<=[tT]oken=)[0-9a-fA-F]{40}/';
179 return preg_replace($pattern,
'--AnonymizedToken--', $requestedUrl);