<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Логирование в PHP с помощью Zend Log

Логирование в PHP с помощью Zend Log

В каждом реальном PHP приложений время от времени возникают ошибки и исключения, выскакивают предупреждения, сообщения. Если мы не будим записывать эту информацию (логировать), то в один прекрасный момент станет невозможным понять, в какой же части приложения возникают эти ошибки и исключения, и, соответственно, не сможем решить их. К тому же, существуют такие ситуации, когда логирование событий, действий просто необходимо, как в случае, с входом пользователя в систему и выходом из нее, например.

В PHP уже существуют необходимые средства для журналирования: функция error_log() – для отправки сообщения в системный журнал, функция set_error_handler(), для перехвата предупреждений и ошибок. Эти функции могут быть использованы для пользовательского управления ошибками, давая разработчику кода возможность самостоятельного управления логикой обработки и фильтрации ошибок.

Однако такой низкоуровневый доступ приводит к частому дублированию кода, и что еще более важно, такой код более подвержен ошибкам. Поэтому на помощь программисту приходят уже готовые компоненты, хорошо протестированные и зарекомендовавшие себя в “боевых” условиях.

К таким компонентам относится компонент zend-log из фреймворка Zend. Компонент zend-log может быть использован в качестве многоцелевого компонента логирования, эдакий мастер на все руки. Он поддерживает множество форматов журнальных сообщений и разновидностей баз логирования (файлы, базы данных), плюс ко всему имеет проработанную систему фильтрации сообщений и много чего еще. Также zend-log совместим с PSR-3 стандартом логирования. Устанавливается так:

  сomposer require zendframework/zend-log

Используется следующим образом (для примера используется файл index.php в корне проекта):

<?php

  require 'vendor/autoload.php';
  
  use Zend\Log\Logger;
  use Zend\Log\Writer\Stream; 
  
  $logger = new Logger;
  
  // отправляем  ошибки в консоль
  $writer = new Stream('php://ouput');
  
  $logger -> addWriter($writer);
  $logger -> log(Logger::INFO,'Некая информация');
  
?>

Результат выполнения кода выше:

  2017-09-26T10:40:34+03:00 INFO(6): Некая информация

Итоговая строка включает время события, приоритет и сообщение. Формат выводимого сообщения, безусловно, может быть изменен, в случае необходимости с помощью метода setFormatter(). По умолчанию, строка лога описывается следующим шаблоном:

  %timestamp% %priorityName% (%priority%): %message% %extra%
  1. %timestamp% - это метка времени
  2. %priorityName% - текстовая метка приоритета
  3. %priority% - числовая метка приоритета
  4. %message% - сообщение
  5. %extra% - необязательное значение для дополнительной информации

Если Вы захотите изменить формат сообщения, то это делается следующим образом:

<?php

  $formatter = new Zend\Log\Formatter\Simple('сообщение %message%' . PHP_EOL);
  $writer -> setFormatter($formatter);

?> 

Компонент zend-log может быть также использован для логирования ошибок и исключений самого интерпретатора PHP. Для этого в классе Logger существую два статических метода: Logger::registerErrorHandler($logger) – для перехвата ошибок и Logger::registerExceptionHandler($logger) - для перехвата исключений.

<?php

  use Zend\Log\Logger;
  use Zend\Log\Writer;
  
  $logger = new Logger;
  $writer = new Writer\Stream(__DIR__ . '/test.log');
  $logger->addWriter($writer);
  
  // Логировать ошибки
  Logger::registerErrorHandler($logger);
  
  // Логировать исключения
  Logger::registerExceptionHandler($logger);

?>

Как упоминалось ранее, zend-log предоставляет нам возможность фильтрации сообщений для логирования, т.е. перед тем как записать сообщение в лог, мы может посмотреть удовлетворяет ли оно нашим критериям, и если да, то записываем.

Вот пример:

<?php

  $filter = new Zend\Log\Filter\Priority(Logger::CRIT);

  // метод addFilter интерфейса Writer
  $writer->addFilter($filter);

?>

В данном примере, мы будем логировать только те сообщения, чей приоритет меньше или равен критическому (Logger::CRIT).

Полный список приоритетов, определенных в классе Zend\Log\Logger:

<?php

  const EMERG   = 0;  // Авария: система непригодна для использования
  const ALERT   = 1;  // Тревога: срочно необходимо принимать меры
  const CRIT    = 2;  // Критическая ситуация
  const ERR     = 3;  // Ошибка
  const WARN    = 4;  // Предупреждение
  const NOTICE  = 5;  // Внимание
  const INFO    = 6;  // Информация
  const DEBUG   = 7;  // Дебаг, отладка

?>

Мы также можем фильтровать сообщения на основе регулярных выражений, временных меток и т.д. Таким образом, логирование в PHP – это важная и порой необходимая вещь при разработке web-приложений.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.