<MyRusakov.ru />

Программирование на C++ в Unreal Engine 5

Программирование на C++ в Unreal Engine 5

Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.

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

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

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

Подпишитесь на мой канал на 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):

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