В каких-то случаях нам может быть недостаточно логирования в Журнале событий или php-error.log, тогда нужно изменить немного файл /bitrix/.settings.php.
То, что там по умолчанию:
'exception_handling' =>
array (
'value' =>
array (
'debug' => true,
'handled_errors_types' => 4437,
'exception_errors_types' => 4437,
'ignore_silence' => false,
'assertion_throws_exception' => true,
'assertion_error_type' => 256,
'log' => NULL,
),
'readonly' => false,
),Меняем на:
'exception_handling' =>
array (
'value' =>
array (
'debug' => true,
'handled_errors_types' => 4437,
'exception_errors_types' => 4437,
'ignore_silence' => false,
'assertion_throws_exception' => true,
'assertion_error_type' => 256,
'log' => array( // Настройки логирования
'settings' => array(
'file' => $_SERVER['DOCUMENT_ROOT'].'/upload/logs/system_errors.log', // Путь к логу
'log_size' => 10 * 1024 * 1024, // 10MB макс. размер файла
'log_level' => E_ALL, // Уровень логирования
),
'callbacks' => array( // Кастомные обработчики
'exception' => function($exception) {
$logDir = $_SERVER['DOCUMENT_ROOT'].'/upload/logs/';
if (!is_dir($logDir)) {
mkdir($logDir, 0755, true);
}
$message = sprintf(
"[%s] %s in %s:%d\nStack Trace:\n%s\n\n",
date('Y-m-d H:i:s'),
$exception->getMessage(),
$exception->getFile(),
$exception->getLine(),
$exception->getTraceAsString()
);
file_put_contents(
$logDir.'critical_'.date('Y-m-d').'.log',
$message,
FILE_APPEND
);
}
)
)
),
'readonly' => false,
),Теперь тут у нас появится лог ‘/upload/logs/ с названием system_errors.log