@Yariy

Как заставить работать глобальный обработчик исключений (exception_handling в .settings.php)?

.settings.php, блок exception_handling
'exception_handling' => [
    'value' => [
        'debug' => false,
        'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE,
        'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING & ~E_DEPRECATED,
        'ignore_silence' => false,
        'assertion_throws_exception' => true,
        'assertion_error_type' => 256,
        'log' => [
            'className' => '\Namespace\GlobalLogHandler',
        ],
    ],
    'readonly' => false,
],

Класс GlobalLogHandler
class GlobalLogHandler extends \Bitrix\Main\Diag\ExceptionHandlerLog
{
    private Logger $logger;

    public function initialize(array $options)
    {
        $this->logger = LoggerLocator::getLogger()->setChannel('global');
    }

    /**
     * @param Throwable $exception
     * @param $logType
     */
    public function write($exception, $logType)
    {
        $this->logger->emergency($exception->getMessage(), [
            'file' => $exception->getFile(),
            'line' => $exception->getLine(),
            'trace' => $exception->getTraceAsString()
        ]);
    }
}

Пишу на главной странице где-нибудь
throw new \Exception('fffffffffffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuuuuu');

В итоге на странице вижу
При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php

И в логи ничего не пишется. Не могу понять, что я делаю не так.
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
Ge1i0N
@Ge1i0N
Дока
Не так
'className' => '\Namespace\GlobalLogHandler',

А так
'class_name' => '\Namespace\GlobalLogHandler',
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы