Пока настройки центрального класса CakePHP – Configure Class могут действительно помочь заглянуть под «капот» вашего приложения, существуют ситуации, когда вам необходимо записывать данные о том, что происходит в вашем приложении, на диск. В мире, который становится более зависимым от технологий наподобие SOAP и AJAX, отладка может быть более сложной.
Протоколирование также может быть способом узнать, что происходило в вашем приложении в течение длительного периода времени. Какие поисковые условия использовались? Ошибки какого типа отображались пользователям? Как часто выполнялся тот или иной запрос?
Протоколировать данные в CakePHP довольно просто – функция log() является частью класса Object, который является родителем, почти для всех классов CakePHP. Если контекст является CakePHP классом (Model, Controller, Component... ), вы можете протоколировать ваши данные.
Функция log() принимает два параметра. Первый параметр – это сообщение, которое вы хотите записать в лог-файл. По умолчанию, сообщение об ошибке пишется в лог-файл, расположенный в app/tmp/logs/error.log.
<?
//Выполнение этого кода внутри класса CakePHP
$this->log("Что-то не работает!");
//добавит запись в app/tmp/logs/error.log
2007-11-02 10:22:02 Error: Что-то не работает!
?>
Второй параметр используется для определения типа журнала протоколирования, в который вы хотите записывать сообщения. Если не определен, то по умочанию – это LOG_ERROR, который записывает в лог-файл, упомянутый выше. Вы можете установить второй параметр в LOG_DEBUG для записи ваших сообщений в альтернативный отладочный лог-файл, расположенный в app/tmp/logs/debug.log:
<?
//Выполнение этого кода внутри класса CakePHP
$this->log('Отладочное сообщение.', LOG_DEBUG);
//добавит запись в app/tmp/logs/debug.log (а не в error.log)
2007-11-02 10:22:02 Error: Отладочное сообщение.
?>
Вы также можете определить другое имя для лог-файла, присвоив второму параметру имя этого файла.
<?
//Выполнение этого кода внутри класса CakePHP
$this->log('Специальное сообщение для лог-файла activity', 'activity');
//добавит запись в app/tmp/logs/activity.log (а не в error.log)
2007-11-02 10:22:02 Activity: Специальное сообщение для лог-файла activity
?>
Для работы протоколирования пользователи веб-сервера должны иметь права на запись в каталог app/tmp.
<< Кэширование | Тестирование >>