当前位置: 首页 > news >正文

Unreal Engine UE_LOG

Unreal

  • 🎮 Unreal Engine - UE_LOG
    • 📝 定义
    • 🏛 类/宏关联
    • ⚡ 关键特性
    • 🛠️ 常见配置
    • 📚 使用方法
      • 🔧 基础语法
      • 🔍 示例
    • 🪂 典型应用场景
    • 🔗 与其他组件对比
    • ⚠️ 常见问题与注意事项
    • 🏷 小结

🎮 Unreal Engine - UE_LOG


📝 定义

UE_LOG 是 Unreal Engine 中用于输出日志信息的核心宏,用于在开发过程中调试程序、记录运行状态、追踪错误等。它支持将信息输出到控制台、日志文件(如 Saved/Logs 目录下的日志文件)以及调试器(如 Visual Studio 的输出窗口),并可通过日志级别和日志类别进行过滤管理。


🏛 类/宏关联

UE_LOG 本身是一个宏定义,其实现依赖于 Unreal Engine 的日志系统框架,核心关联组件包括:

  • FLogCategoryBase:日志类别基类,所有自定义日志类别均继承自此
  • ELogVerbosity:日志级别枚举(如 FatalErrorWarning 等)
  • FOutputDevice:日志输出设备基类,负责将日志信息发送到控制台、文件等目标

⚡ 关键特性

  • 分级日志:通过日志级别(FatalErrorWarningDisplayLogVerboseVeryVerbose)控制信息详细程度,便于过滤无关内容
  • 类别管理:支持自定义日志类别(如 LogMyGame),可单独开启/关闭某类日志
  • 跨平台兼容:在 Windows、Mac、Linux 等平台均能稳定输出日志
  • 格式化输出:支持类似 C++ printf 的格式化语法(如 %s%d%f),可输出变量值、对象信息等
  • 调试集成:日志信息可直接显示在编辑器控制台和调试器,便于实时追踪程序流程

🛠️ 常见配置

  • 日志级别设置
    • DefaultEngine.ini 中配置全局或类别日志级别,例如:

      [Core.Log]
      LogMyGame=Verbose  ; 自定义类别 LogMyGame 输出 Verbose 及以上级别日志
      LogTemp=Warning    ; 临时类别 LogTemp 仅输出 Warning 及以上级别日志
    • 通过命令行参数覆盖配置:LogCmds="LogMyGame=VeryVerbose"

  • 日志文件路径:默认存储在项目目录 Saved/Logs/[项目名].log,可通过引擎配置自定义路径

📚 使用方法

🔧 基础语法

UE_LOG(LogCategory, LogVerbosity, FormatString, Parameters...)
  • LogCategory:日志类别(如 LogTemp 临时类别,或自定义类别)
  • LogVerbosity:日志级别(如 ErrorWarning
  • FormatString:格式化字符串
  • Parameters:对应格式化字符串的参数

🔍 示例

  1. 使用临时日志类别

    UE_LOG(LogTemp, Warning, TEXT("Player health: %d"), CurrentHealth);
  2. 自定义日志类别

    • 先在头文件中声明:

      DECLARE_LOG_CATEGORY_EXTERN(LogSpaceShooter, Log, All);
    • 在源文件中定义:

      DEFINE_LOG_CATEGORY(LogSpaceShooter);
    • 使用:

      UE_LOG(LogSpaceShooter, Display, TEXT("Enemy spawned at: %s"), *SpawnLocation.ToString());
  3. 输出致命错误(会导致程序崩溃)

    UE_LOG(LogTemp, Fatal, TEXT("Critical error: Player controller is null!"));

🪂 典型应用场景

  • 🐞 调试阶段输出变量值,验证程序逻辑(如角色位置、属性值变化)
  • 🚨 记录错误信息(如空指针、资源加载失败),便于定位 Bug
  • 📊 追踪程序流程(如关卡切换、事件触发),确认代码执行顺序
  • 🔍 性能分析辅助(如记录函数执行时间)

🔗 与其他组件对比

功能UE_LOGGEngine->AddOnScreenDebugMessage
输出位置控制台、日志文件、调试器游戏屏幕直接显示
信息保留持久化到日志文件一段时间后自动消失
适用场景详细日志记录、调试追踪实时显示关键信息(如坐标、状态)
性能影响较低(可通过级别控制)较高(频繁调用可能影响帧率)

⚠️ 常见问题与注意事项

  • 日志级别滥用:避免在发布版本中保留过多 VerboseVeryVerbose 级别日志,可能增加性能开销和日志文件体积
  • 格式化错误:格式化字符串与参数类型不匹配会导致编译错误或运行时崩溃(如 %d 对应整数,%s 对应 FString 需加 转换)
  • 自定义类别未定义:使用 DECLARE_LOG_CATEGORY_EXTERN 声明的类别必须用 DEFINE_LOG_CATEGORY 定义,否则会链接错误
  • Fatal 级别谨慎使用Fatal 级日志会强制程序崩溃,仅用于不可恢复的致命错误

🏷 小结

  • ✅ UE_LOG 是 Unreal Engine 中最核心的日志工具,支持分级和分类管理
  • ✅ 合理使用日志级别和类别可提高调试效率,便于后期问题排查
  • ✅ 自定义日志类别能让日志更有条理,建议按模块或功能划分(如 LogCombatLogUI
  • ✅ 发布版本前需清理冗余日志,避免敏感信息泄露和性能损耗
http://www.dtcms.com/a/344883.html

相关文章:

  • BigData大数据应用开发学习笔记(04)离线处理--离线分析Spark SQL
  • 用 Go 从零实现一个简易负载均衡器
  • SSM从入门到实战: 2.7 MyBatis与Spring集成
  • 计算机内存中的整型存储奥秘、大小端字节序及其判断方法
  • Bluedroid vs NimBLE
  • 北京-测试-入职甲方金融-上班第三天
  • AR眼镜巡检系统在工业互联网的应用:AR+IoT
  • JAVA后端开发——API状态字段设计规范与实践
  • 目标检测数据集转换为图像分类数据集
  • Pandas中的SettingWithCopyWarning警告出现原因及解决方法
  • 共享内存详细解释
  • 前端在WebSocket中加入Token的方法
  • 12-Linux系统用户管理及基础权限
  • 塞尔达传说 王国之泪 PC/手机双端 免安装中文版
  • celery
  • C语言翻译环境作业
  • 大学校园安消一体化平台——多警合一实现智能联动与网格化管理
  • 【链表 - LeetCode】19. 删除链表的倒数第 N 个结点
  • Android.mk 基础
  • Electron 核心 API 全解析:从基础到实战场景
  • 从零开始搭 Linux 环境:VMware 下 CentOS 7 的安装与配置全流程(附图解)
  • openstack的novnc兼容问题
  • 【日常学习】2025-8-20 框架中控件子类实例化设计
  • FPGA学习笔记——简单的IIC读写EEPROM
  • LeetCode 3195.包含所有 1 的最小矩形面积 I:简单题-求长方形四个范围
  • 化工生产场景下设备状态监测与智能润滑预测性维护路径
  • 校园作品互评管理移动端的设计与实现
  • Boost库中boost::random::normal_distribution(正态分布)详解和实战示例
  • 腾讯云EdgeOne安全防护:快速上手,全面抵御Web攻击
  • 如何优雅的监听dom的变化(尺寸)