Отладка PHP-кода в MODX Revolution :: Cетевой уголок Majestio

Отладка PHP-кода в MODX Revolution


Для получения отладочных сообщений в журнале отчетов MODX следует использовать $modx->log(). Объявление функции имеет вид:

public function log($level, $msg, $target = '', $def = '', $file = '', $line = '')

Первый параметр

Первый параметр указывает уровень/тип сообщения — ошибка, предупреждение, информационное сообщение или отладочная информация. Для каждого уровня константы:

Второй параметр

Второй параметр содержит информацию, которая будет записана в журнал ошибок.

Обычно ограничиваются указанием только первых двух параметров

Третий параметр

В него передается "назначение", куда будет выводится информация. Возможные значения:

Четвертый параметр

В нём можно передать название скрипта или метода класса, в котором вызван метод log(). Особенно это удобно, когда таких вызовов несколько.

Пятый и шестой параметры

Они отвечают за вывод информации о скрипте и номере строки. Если их не указать, то они определятся автоматически как:

Системные настройки

Есть две системные настройки, влияющие на работу метода log() - это log_target и log_level. По умолчанию они имеют значение FILE и 1, соответственно.

Первая (log_target) указывает куда выводить информацию (см. "третий параметр").

Вторая (log_level) указывает текущий уровень логирования MODX. Возможные значения:

Эта настройка ограничивает логирование сообщений указанным уровнем. Таким образом log() с уровнем выше, чем в настройке, будет отклонён. Например, если в настройке указано log_level = 1 (т.е. логируются только ошибки), то все вызовы метода log() с уровнем WARN, INFO и DEBUG в журнал записаны не будут. Как правило, при отладке на эти уровни не обращают внимание и используют текущий уровень логирования для ошибок.

Примеры

$modx->log(MODX_LOG_LEVEL_ERROR, 'Сообщение');
// или так
$modx->log(modX::LOG_LEVEL_ERROR, 'Сообщение');
// или ещё короче
$modx->log(1, 'Сообщение');

В режиме разработки полезно работать с уровнем DEBUG. Это полезно тем, что даже если вы забудете потом удалить этот вызов, то он не будет забивать журнал ошибок, так как на продакшн сайте уровень логирования всегда выставляется в 1 (записывать в журнал только ошибки).

Если нужно вывести только отладочную информацию на странице без контента, то указываем вывод в HTML и добавляем die() или exit(), например:

$modx->log(MODX_LOG_LEVEL_ERROR, print_r($modx->config, 1),'HTML'); die();
Рейтинг: 5/5 - 2 голосов