<MyRusakov.ru />

Создание сайтов на Django

Создание сайтов на Django

Данный курс научит Вас создавать сайты на очень мощном фреймворке – Django. Курс состоит из 9 разделов, в которых Вы с нуля освоите данный фреймворк на примере создания полноценного Интернет-магазина.

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

Помимо самого курса Вас ждёт ещё и бесплатный ценный Бонус: «Unit-тестирование сайта на Django». В этом Бонусе Вы узнаете, как можно написать автоматические тесты для проекта на Django. Это позволит находить оперативно ошибки, а также даст возможность в будущем добавлять новый функционал, не боясь что-то сломать в старом.

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

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

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

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

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

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

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

Зачем Вы изучаете программирование/создание сайтов?

Компонент Zend Log. Продолжение.

Компонент Zend Log. Продолжение.

Продолжаем изучать компонент Zend Log. Первая часть данной статьи находится здесь.

Предобработка данных.

Если Вам необходимо в автоматическом режиме добавлять дополнительную информацию к логам, перед тем как они попадут в файл или какое-либо другое хранилище, то в этом случае Вы можете использовать класс Zend\Log\Processor. Этот класс будет исполняться каждый раз, перед тем как данные будут выводиться через класс Zend\Log\Writer. Напомню, что класс Writer является абстракцией, инкапсулирующей в себе работу с различными хранилищами, будь-то файл или база данных. Он предоставляет единый интерфейс для сохранения логов. Входными данными для класса Zend\Log\Processor служит событие логирования, которое представляет собой массив, включающий в себя всю информацию для логирования; выходными данными также является событие логирования, но такое, что может включать модифицированные или дополнительные значения. Т.е. класс Processor изменяет событие логирования до того, как оно будет послано в класс Writer.

Множественность источников сохранения данных

Одной из важных особенностей компонента zend-log является возможность вести запись логов в несколько различных хранилищ. Хранилища в коде представлены различным классами адаптеров. Например, Вы можете писать логи как в файлы, так и в базу данных.

<?php

  use Zend\Db\Adapter\Adapter as DbAdapter;
  use Zend\Log\Formatter;
  use Zend\Log\Writer;
  use Zend\Log\Logger;

  // Адаптер базы данных
  $db = new DbAdapter([
      'driver'   => 'Pdo',
      'dsn'      => 'mysql:dbname=mysitelog;host=localhost',
      'username' => 'пользователь',
      'password' => 'пароль'
  ]);


  // соответствие полей события лога (поля события лога разбирали в предыдущей статье)
  // колонкам в базе данных, т.е. например, поле времени timestamp из лога
  // соответствует колонке date в базе
  $mapping = [
      'timestamp' => 'date',
      'priority'  => 'type',
      'message'   => 'event',
  ];
  
  
  // создаем объект писателя (Writer) со следующими параметрами
  // 1) $db - адаптер базы данных
  // 2) 'log' - таблица логов в базе
  // 3) $mapping - карта соответствия
  $writerDb = new Writer\Db($db, 'log', $mapping); // log table
  
  // объект форматера
  $formatter = new Formatter\Base();
  
  // используется, для преобразования даты события в формат даты MySQL
  $formatter->setDateTimeFormat('Y-m-d H:i:s');
  $writerDb->setFormatter($formatter);
  
  
  // запись лога в файл 
  $writerFile = new Writer\Stream(__DIR__ . '/test.log');
  
  
  // создаем объект класса Logger и регистрируем в нем 
  // объекты "писателей"
  $logger = new Logger();
  
  // объект, пишущий лог в базу данных
  $logger->addWriter($writerDb, 1);
  
  // объект, пишущий лог в файл 
  $logger->addWriter($writerFile, 100);
  
  
  // сообщение лога
  $logger->info('Informational message');

?>

Код хорошо комментирован, но остановлюсь на некоторых моментах. В нашем примере, мы совмещаем объекты класса Writer для базы данных и файла. Эти объекты добавляются в класс Logger при помощи метода addWriter(), которому во втором параметре передается число, обозначающее приоритет. Более высокий приоритет приводит к тому, что, объект писателя (Writer) с данным приоритетом будет вызываться раньше, чем аналогичный, но с меньшим. Мы выбрали приоритет 1 для писателя базы данных и приоритет 100 для файлового писателя; это означает, что логирование сначала будет идти в файл, а потом уже в базу данных. Также, обратите внимание, что мы используем специальный форматер даты для писателя базы данных. Это необходимо для того, чтобы правильно преобразовать дату из лога в дату базы данных.

Поддержка стандарта PSR-3

Я уже писал о PSR – стандартах в PHP. Поэтому, если Вам нужна совместимость со стандартом логирования PSR-3, то Вы можете использовать класс Zend\Log\PsrLoggerAdapter. Этот класс может быть использован везде, где необходим интерфейс Psr\Log\LoggerInterface. Вот пример:

<?php

  use Psr\Log\LogLevel;
  use Zend\Log\Logger;
  use Zend\Log\PsrLoggerAdapter;
  
  // создаем объект класса Logger
  $zendLogLogger = new Logger;
  
  // Psr-совместимый адаптер
  $psrLogger = new PsrLoggerAdapter($zendLogLogger);
  
  // запись информационного сообщения в лог
  $psrLogger->log(LogLevel::INFO, 'Psr-совместимый класс логирования');

?>

Таким образом, компонент zend-log предлагает широкий набор свойств, включая поддержку множества источников записи и фильтрации данных лога. Также он совместим со стандартом PSR-3. Надеюсь, что материал был Вам полезен и понятен. Если же нет, то рекомендую ознакомиться с моим курсом "Cоздание и Раскрутка сайта от А до Я", из которого Вы узнаете все необходимое для создания собственного, прибыльного сайта.

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

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