За чистый и ясный код!

Статьи на тему программирования под веб, используя PHP, MySQL, Jquery и многое другое

Логирование ошибок сайта для Kohana.

Январь27

Файл регистрации, журналирование, логирование — все это одно и тоже и сводится к одному — записи различных действия на носитель. Для чего всё это нужно, ой тут много ответов — для протоколирования какой-нибудь процедуры, для контроля поведения кого-то и тд. В общем дело это нужное, и я хотел бы рассказать как я веду логирование ошибок у себя на сайтах написанных с помощью фреймверка Kohana.

В самой Кохане уже есть логирование на уровне ядра фрейма и оно хорошо работает, записывает в папку application/logs данные о логировании (по-дефолту, управляется всё из файла bootstrap.php, строка Kohana::$log->attach(new Kohana_Log_File(APPPATH.’logs’));). Система формирует структуру папок YYYY/MM/DD.php,
где YYYY — год, когда создался файл, MM — месяц (две цифры) и DD.php сам файл с номеров дня месяца.
Файл заполняется по команде:

try
{
	return $this->_write();
}
catch (Exception $e)
{
	// Log & ignore all errors when a write fails
	Kohana::$log->add(Kohana::ERROR, Kohana::exception_text($e))->write();

	return FALSE;
}

само содержание файла лога выглядит так:

2010-10-01 17:54:15 --- ERROR: ReflectionException [ -1 ]: Class controller_contact does not exist ~ SYSPATH\classes\kohana\request.php [ 1094 ]
2010-10-01 17:54:37 --- ERROR: ErrorException [ 4 ]: syntax error, unexpected ';', expecting T_STRING or T_VARIABLE or '$' ~ APPPATH\views\main.php [ 5 ]
2010-10-01 17:56:23 --- ERROR: ReflectionException [ -1 ]: Class controller_contact does not exist ~ SYSPATH\classes\kohana\request.php [ 1094 ]
2010-10-01 17:56:33 --- ERROR: ReflectionException [ -1 ]: Class controller_contact does not exist ~ SYSPATH\classes\kohana\request.php [ 1094 ]
2010-10-01 17:59:58 --- ERROR: ReflectionException [ -1 ]: Class controller_contact does not exist ~ SYSPATH\classes\kohana\request.php [ 1094 ]
2010-10-01 18:28:37 --- ERROR: ErrorException [ 1 ]: Class 'Helper_Html' not found ~ APPPATH\views\form_contact.php [ 37 ]
2010-10-01 18:29:14 --- ERROR: ReflectionException [ -1 ]: Class controller_captcha does not exist ~ SYSPATH\classes\kohana\request.php [ 1094 ]
2010-10-01 18:29:22 --- ERROR: ReflectionException [ -1 ]: Class controller_captcha does not exist ~ SYSPATH\classes\kohana\request.php [ 1094 ]
2010-10-01 18:30:45 --- ERROR: ReflectionException [ -1 ]: Class controller_captcha does not exist ~ SYSPATH\classes\kohana\request.php [ 1094 ]
2010-10-01 18:30:49 --- ERROR: ReflectionException [ -1 ]: Class controller_captcha does not exist ~ SYSPATH\classes\kohana\request.php [ 1094 ]

В принципе вся инфа о падении, добавления своих собственных комментариев и т.д. всё будет фиксироваться. Но мне не очень понравилось то кол-во информации которое я мог почерпнуть из этого файла. Например состояние cookie, что за браузер и тд. Пришлось поискать готовые решения. Такое решение было найдено — kohana-log, что мне тут понравилось, что данные доступны по урлу, что в логе сохраняются следующие данные:

  1. Сама ошибка
  2. IP клиента
  3. uri где произошла ошибка
  4. referer
  5. agent — браузер
  6. cookie

По ссылке http://localhost/path/to/log/day, где day — дата за которую хотим просмотреть лог, вида DD.MM.YYYY. Можно посмотреть лог за текущий или любой день не входя по ФТП или SSH, но были конечно и бока — порой не верный парсинг, отсутствие возможности сохранять свои данные в БД (может и глупо, но было требование заказчика). Для более удобного набора ссылки в браузере, да и человека, я оставил её в виде сео чпу, вообще мне нравятся роутинги фреймворков, которые позволяют сделать чпу-ссылки, а не ссылки в виде набора параметров. Также есть еще ссылка, для загрузки лога, в виде чпу http://localhost/path/to/log/download/day (эту ссылку я уже добавил с своей версии).

Более подробно на странице плагина.

Я немного переписал плагин, починил парсинг, добавил возможность загрузки лога к себе на машину и также добавил возможность сохранять данные лога в БД.

Для логирования в файл нужно в bootstrap.php написать следующий код

Kohana::$log->attach(new Log_Writer_File(APPPATH.'logs'));

Для логирования в БД нужно в bootstrap.php написать следующий код

Kohana::$log->attach(new Log_Writer_Database);

Также для БД нужно сделать табличку

CREATE TABLE IF NOT EXISTS `logs` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `level` enum('EMERGENCY','CRITICAL','ERROR','WARNING','NOTICE','INFO','DEBUG') COLLATE utf8_unicode_ci DEFAULT 'INFO',
  `message` varchar(5000) COLLATE utf8_unicode_ci DEFAULT NULL,
  `client` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
  `uri` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
  `referer` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
  `agent` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
  `cookie` varchar(2000) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Логирование ошибок сайта' AUTO_INCREMENT=1 ;

Пример просмотра лога можно увидеть тут, а скачать исходники моего переделанного модуля логирования тут.

Удачного дебага и профилирования.

Статья просмотренна 708312 раз, зашло посетителей 71720

Расширения браузера Google Chrome для веб-программиста

Январь10

VS

FireFox-vs-Google-Chrome Каждый день в своей работе (создание сайтов любой сложности) я использую для разработки два основных браузера FireFox (больше) и Goolge Chrome (меньше), но в последнее время, наверное благодаря телефону с ОС Андроид, я начал больше присматриваться к Хрому. И дабы чувствовать себя «как рыба в воде» хотелось чтобы те расширения которые я использую в FireFox-е хотелось бы использовать и тут.
На удивление почти все мои расширения есть в магазине Хрома. И так что же я использую:

FireBug Lite

FireBug LiteНаверное один и самых ценных инструментов для разработки. Хром конечно содержит по-дефолту свою панель разработчика, но от привычек надо отказываться постепенно. Поживем увидим. Скачать расширение можно по тут

Edit This Cookie

Edit This CookieРасширение для работы с куками (cookie), позволяет как добравлять, так и изменять существующие куки на сайте. Закачать расширение можно тут

ColorZilla

ColorZillaОчень часто необходимо узнать цвет пипеткой или перевести RGB в HEX и наоборот, для этих целей это прекрасное расширение.
Закачать расширение можно тут

HTTP Headers

HTTP HeadersПросмотре заголовков страницы. Единственное я не нашел расширение аля Liveheaders, оно мне нравилось тем, что показывало абсолютно все заголовки которые происходили во время загрузки страницы. Если кто-то может поделиться так расширением для Хрома, буду рад увидеть это в комментариях.
Закачать расширение можно тут

JSONView

JSONViewОчень наглядно показывает содержания JSON ответа. Рекомендую для отладки приложений.
Закачать расширение можно тут

MeasureIt

MeasureItКуда без линейки при верстке!
Закачать расширение можно тут

PerfectPixel by WellDoneCode

PerfectPixel by WellDoneCodeВот это злое расширение, когда оно попадает в руки заказчику и он начинает все проверять…, но и очень полезное разработчику, сразу видно где «халтурка».
Закачать расширение можно тут

Web Developer

Web DeveloperНабор различных примочек для включения/отключения и показ скрытых элементов. Жаль что здесь на работает валидация локальной страницы — очень помогало в ФФ, а также не работает линейка, изменение размера экрана и тд, в общем поставил чтобы было, вдруг починят.
Закачать расширение можно тут

Редактирование и отправка скриншотов

Редактирование и отправка скриншотовПолезный инструмент, позволяет сделать скрин или ВСЕГО сайта, а не только видимого окна или сделать часть, также подредактировать скрин и получить короткую ссылку для отправки кому-то. Полезно при пояснении где именно что-то не так или куда именно надо нажать.
Закачать расширение можно тут

Удаленный рабочий стол Chrome

Удаленный рабочий стол ChromeК разработки сайтов отношения не имеет, но очень помогает что-то показать «криворуким пользователям», включаем у себя хром с расширением и клиент. Клиент запускает расширение у себя, дает вас код, вы запускаете у себя и вводите код, дальше на вашем экране появляется экран «криворукого юзера» и вы можете показать что да как надо делать.
Закачать расширение можно тут

Попрошу юзеров, которые прочтут статью и есть возможность поделится чем-то новым оставить об этом комментарий!

Скачивайте гугл хром!

Статья просмотренна 696301 раз, зашло посетителей 75721

  

Облако тегов

cli csv dump events form Kohana locale models MySQL mysqldump orm PHP tools trigger validate газ газовый счетчик итоги кеширование переменные

Облако тегов плагина WP Cumulus для WordPress требует для просмотра Flash Player 9 или выше.

Я на твиттере!

  • у твиттера тоже бывают перерывы...

Календарь

Январь 2012
Пн Вт Ср Чт Пт Сб Вс
« Ноя   Янв »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Сейчас на сайте