<MyRusakov.ru />

Своя Web-студия за 55 дней

Своя Web-студия за 55 дней

Система "Своя Web-студия за 55 дней" поможет Вам открыть свою собственную успешную Web-студию всего за 55 дней. Обучение построено на теории, плюс практике, то есть я прямо на Ваших глазах буду абсолютно с нуля открывать свою Web-студию, нанимать специалистов, принимать и выполнять заказы. Это настоящее реалити-шоу. Плюс весь курс разбит по дням, в каждый из которых Вам необходимо будет посмотреть небольшое количество видеоуроков, выполнить задания по этим урокам и проставить галочки о выполнении. Каждый из дней у Вас будет отнимать не более 1-го часа в день.

Таким образом, выполняя ежедневно маленькие шажки, Вы через 55 дней станете владельцем уже прибыльной Web-студии, заработав при этом первые 100 000 рублей.

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

Подписавшись по 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):

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