Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual/Logging ...
Это старая версия Manual/Logging за 2008-01-07 14:03:45..

Протоколирование (логирование)

Введение

Хотя класс конфигурации и позволяет вам узнать что происходит «под капотом» приложения, иногда возникает необходимость записать вывод отладки на диск. В мире, который становится все более зависимым от технологий вроде AJAX и SOAP отладка может быть сильно затруднена.


Протоколирование позволяет вам понимать что происходит в вашем приложении с течением времени. Какие слова используются в поиске? Какие ошибки показываются пользователям? Как часто выполняется тот или иной запрос?


Протоколирование в CakePHP устроено очень просто. Функция log() является методом класса Object, который является родителем почти для всех классов приложения. Если вы находитесь в окружении любого класса 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: Отладочное сообщение.


Замечание: директория app/tmp должна быть доступной для записи веб-сервера чтобы протоколирование работало корректно.


 
Комментарии

свои журналы ошибок делать можна? что б не писать в error.log весь мусор

ip233.232.airbites.od.ua (2008-04-17 15:03:38)

Это и есть ваш собственный журнал. Это не то же самое, что и error.log, который ведет сервер.

AntonIsaykin (2008-04-17 16:12:51)

ну это я понял. а если мне надо разделить какието сообщения по нескольким журналам. я могу зделать так что б $this->log писал не в error.log а в “test.log” к примеру? если я вместо LOG_DEBUG напишу LOG_TEST врядли будет работать

ip233.232.airbites.od.ua (2008-04-17 19:36:05)

А вы попробуйте ;-)
Судя по http://api.cakephp.org/1.2/cake__log_8php-source.html#l00068
и по http://api.cakephp.org/1.2/object_8php-source.html#l00118
если вы передадите не константу (типа LOG_DEBUG), а текст, то лог запишется в файл $filename = LOGS . $type . '.log', где $type это строка, которую вы передадите.

AntonIsaykin (2008-04-17 19:48:59)

спасибо ;-)

ip233.232.airbites.od.ua (2008-04-17 19:52:21)
Добавить комментарий:

Файлов нет. [Показать файлы/форму]