Как записывать и читать из логов средствами Modx и php
Рассмотрим примеры использования логов для отладки веб-приложения.
Используем логи Modx
По умолчанию логи Modx находятся в файле /core/cache/logs/error.log. Это обычный текстовый документ, можете открывать его в любом редакторе. Также он доступен в админке Modx, пункт Управление - Отчеты - Журнал ошибок (в разных версиях меню может отличаться). Но самый удобный способ при работе в командной строке Linux, это набрать
tail -f /path_to_modx_site/core/cache/logs/error.log
Команда будет выводить последние несколько строк из файла в режиме "онлайн"
Часто логи нужны нам не только для того, чтобы посмотреть ошибки, генерируемые Modx. Иногда мы хотим записать туда свои данные в целях отладки. Старый добрый вывод в браузер тоже работает, но не всегда это удобно, например, при отладке скриптов, вызываемых аяксом. В Modx Revo записать в логи данные можно так:
$modx->log(1, 'message: '.$phone);
Вторым параметром передается сама строка для вывода. Вначале добавляется пояснения для удобства, чтобы не запутаться, когда в логи выводим много данных.
Если мы работаем не с Modx или не хотим использовать его логи, то можем работать с логами веб-сервера. Где они находятся, нужно смотреть в настройках веб-сервера. Это тот же самый текстовый файл, который можем открывать, как угодно. А записывать в него можем командой
error_log('ARRAY: '.var_export($array, true));
Обратите внимание, что можно использовать команду var_export со вторым параметром true. Функция var_export выведет содержимое любого типа, например, массивов. Капсом пояснение пишем, чтобы было легче ориентироваться в логах. Можно даже записать отдельную функцию для записи в логи, например:
// Функция записи в логи function errorLog($caption, $param) { error_log(strtoupper($caption).': '.var_export($param, true)); } // Вызов функции errorLog('список телефонов', $phones);
Как видим, запись стала читаться получше
Истории из жизни айти и обсуждение кода.