🤖
LifeEXE
Udemy курс UE / C++ PatreonBoostyTelegramYouTube
  • 🤍Welcome
  • 💡Мои курсы
    • 🎮Unreal Engine — полное руководство по разработке на С++
    • 🧪Автоматизация и тестирование в Unreal Engine
    • 🐍Snake game
    • 🔊Metasounds
    • 🏗️Design patterns
    • 🕹️Game Engine hardCORE series
    • 🧠OpenAI
  • 🔗Сообщество
    • Ресуры
    • Поддержать проект
    • Проекты участников сообщества
    • Code review участников сообщества
  • 📚Образовательные ресурсы
    • Книги
      • C++
      • ООП
      • Чистый код
      • Компьютерная графика
      • Алгоритмы и структуры данных
      • Дизайн и проектирование
      • Виртуальная реальность
      • Процедурная графика
      • Функциональное программирование
      • Менеджмент проектов
      • Фундаментальное
      • Тестирование
      • Разное
    • Online
      • Unreal Engine
      • C++
      • Компьютерная графика
      • Чистый код
      • AI
      • Разное
    • Статьи
      • Code / C++
  • 👨‍💻Software
    • IDE
      • VS hotkeys
    • Unreal Engine
    • GIT
    • CI/CD
    • Tools
      • С++
      • Компьютерная графика
      • UI / UX
      • Animations
      • GameDev
      • Unreal Engine
      • Creative coding
      • Sound
      • Документация
      • Статический анализ кода
      • Тестирование
      • Автоматизация
      • Network
      • CV / ML
      • Profiling
      • Fonts
      • UML / diagrams
      • Разное
    • Free assets
  • 💾Code
    • Code style
      • .clang-format
      • .gitignore
      • UE code style
      • Code style проектов LifeEXE
    • C++
      • Const correctness
      • Использование auto
      • Lambda выражения
      • Forward declaration
      • Measure execution time
      • Immediately Invoked Lambda Expression (IILE)
    • Unreal Engine
      • Медленный ли Cast
      • UE_LOGFMT
  • ⁉️FAQ
    • Часто задаваемые вопросы
Powered by GitBook
On this page

Was this helpful?

  1. Code
  2. Unreal Engine

UE_LOGFMT

В Unreal Eengine 5 появился удобный макрос для логирования — UE_LOGFMT. Он позволяет логировать строки более гибко и безопасно.

Пример использования:

#include "Logging/StructuredLog.h" 
DEFINE_LOG_CATEGORY_STATIC(LogSlasherGame, All, All);

const FString Name = "Patrick Bateman"; 
const bool IsDead = false;
const int32 Ammo = 10;
UE_LOGFMT(LogSlasherGame, Display, "Name: {0}, is alive: {1}, ammo: {2}", Name, !IsDead, Ammo);

Сравнение с классическим UE_LOG:

#include "Logging/StructuredLog.h" 
DEFINE_LOG_CATEGORY_STATIC(LogSlasherGame, All, All);

const FString Name = "Patrick Bateman"; 
const bool IsDead = false; 
const int32 Ammo = 10;

UE_LOGFMT(LogSlasherGame, Display, "Name: {0}, is alive: {1}, ammo: {2}", Name, !IsDead, Ammo);
UE_LOG(LogSlasherGame, Display, TEXT("Name: %s, is alive: %s, ammo: %d"), *Name, IsDead ? TEXT("false") : TEXT("true"), Ammo);

UE_LOGFMT поддерживает именованные аргументы:

#include "Logging/StructuredLog.h" 
DEFINE_LOG_CATEGORY_STATIC(LogSlasherGame, All, All);

const FString Name = "Patrick Bateman"; 
const bool IsDead = false; 
const int32 Ammo = 10;

UE_LOGFMT(LogSlasherGame, Display, "Name: {name}, is alive: {alive}, ammo: {ammo}", Name, !IsDead, Ammo);

Результат логирования везде одинаковый:

Name: Patrick Bateman, is alive: true, ammo: 10

Не забудьте, что для использования UE_LOGFMT необходимо подключить заголовочный файл:

#include "Logging/StructuredLog.h"
PreviousМедленный ли CastNextЧасто задаваемые вопросы

Last updated 8 months ago

Was this helpful?

UE_LOGFMT использует современный подход к форматированию строк — , подобно (С++20), или анриловскому FString::Format, что обеспечивает безопасность типов (type safety) и улучшает читаемость.

💾
string interpolation
std::format