Addmessage2log(…)
Это функция из старого ядра. Многие модули пишут через нее отладочную информацию.
Пример настройки места хранения логов, выводимых данной функцией, выглядит так (папка logs/bx должна быть создана):
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"] . "/logs/bx/" . date("Y-m-d") . ".log");
Прописать данную настройку можно, например, в dbconn.php.
Как посмотреть логи ошибок?
Логи в битрикс
Объяснять, что такое логи – нет необходимости. Когда есть логи, то проще разобраться с возникшими проблемами и выяснить, почему они начались. Основные моменты в использовании логов.
Логи не должны занимать всё свободное пространство на диске, т.е. в логи нужно помещать только нужную информацию, а не всё подряд. Устаревшие логи должны удаляться. Для удаления устаревших логов лучше всего настроить задание на cron.
Логи должны быть удобными для изучения – логи с ошибками и логи с диагностическими данными должны помещаться в разные файлы. Желательно разделять логи на временные интервалы – например, ежедневные логи (наиболее распространенный вариант, или, например, по месяцам, или неделям).
Секция exception_handling в файле .settings.php
Это уже функционал нового ядра D7.
Битрикс через данный функционал пишет информацию обо всех ошибках и исключениях. Что именно пишется – зависит от настроек.
Пример настройки логов с разделением по дате:
'exception_handling' => array (
'value' => array (
'debug' => false, // disables error output to screen
// ошибки для вывода в лог
'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_WARNING,
'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_COMPILE_WARNING,
'ignore_silence' => true,
'assertion_throws_exception' => true,
'assertion_error_type' => 256,
'log' => array (
'settings' => array (
'file' => "logs/bx_error/" . date("Y-m-d") . ".log",
'log_size' => 1000000, // ~ 1Mb per file
),
),
),
'readonly' => true,
),
Функции отладки в ядре d7
На замену функции AddMessage2Log в ядре D7 пришли новые функции:
use BitrixMainDiagDebug;
Debug::dumpToFile($_SERVER); // для случаев, когда нужен var_dump
Debug::writeToFile($_SERVER); // когда нужен print_r
Также в ядре D7 появились методы, для измерения времени. В старом ядре аналогов не было.
use BitrixMainDiagDebug;
Debug::startTimeLabel("foo");
foo();
Debug::endTimeLabel("foo");
Debug::startTimeLabel("bar");
bar();
Debug::endTimeLabel("bar");
print_r(Debug::getTimeLabels());
Таким образом, правильная расстановка функций логирования и временных меток позволит выявить уязвимости в коде и уменьшить время выдачи сайта от сервера пользователю.
$DBDebugToFile = true;
define(“DELAY_DB_CONNECT”, true);
define(“LOG_FILENAME”, $_SERVER[“DOCUMENT_ROOT”].”/log.txt”);
и для слабого юзера, где мне найти log.txt?