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.pswp.cn/web/94033.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Halcon那些事:什么是动态阈值,如何用dyn_threshold分割图片

Halcon那些事:什么是动态阈值,如何用dyn_threshold分割图片 一、什么是动态阈值?为什么需要它? 1. 传统全局阈值的局限性 2. 动态阈值的核心思想 二、Halcon 中的核心算子:`dyn_threshold` 1. 算子原型 2. 参数详解 三、工作原理(数学模型) 四、详细使用步骤与实例 五、关…

Go初级二

Go初级入门(二):变量、常量与数据类型 大家好,欢迎来到《Go初级入门》系列的第二篇!在上一篇文章中,我们介绍了如何安装Go环境并运行第一个“Hello, World”程序。今天,我们将深入Go语言的基础语…

《战神:诸神黄昏》v1.0.668中文版,索尼大作,PC平台体验诸神黄昏

[游戏名称]: 《战神:诸神黄昏》v1.0.668中文版 [软件大小]: 175 GB [软件大小]: 夸克网盘 游戏介绍 《战神:诸神黄昏》是由索尼制作并发行的动作冒险游戏,作为《战神4》的正统续作,它继续了奎托斯与阿特柔斯的神话之旅。在诸神…

AI赋能环保精准治理:AI水质监测溯源快、空气质量预测施策准,守护生态新效能

传统环境保护工作长期受限于 “污染监测滞后”“溯源难度大”“治理方案针对性弱” 的问题,而 AI 技术的深度应用,正让环保工作从 “被动应对” 转向 “主动预判”,既能实时捕捉污染踪迹,还能精准制定治理方案,让生态保…

yolo训练实例(一)

yolo官网 https://github.com/ultralytics/ultralytics?tabreadme-ov-file 下载python和解除限制 https://www.python.org/downloads/windows/ Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled"…

STM32-BKP备份寄存器与RTC实时时钟

引言本文主要从BKP备份寄存器和RTC实时时钟的原理,特性及应用三个方面展开讨论,解析它们在STM32中的独特价值,助力开发者更好的掌握和运用它们。BKP备份寄存器的定义STM32的BKP备份寄存器是一种特殊的存储单元,它位于备份区域&…

Linux网络服务(五)——FTP服务详解与实践操作手册

文章目录前言一、FTP服务概述1.1 FTP基本定义1.2 VSFTP模式分类1.3 FTP端口作用二、FTP作用与工作原理(重点)2.1 FTP的作用、模式及通信方式2.1.1 FTP核心作用2.1.2 VSFTP模式与通信协议2.2 FTP工作原理与流程2.2.1 主动模式工作原理2.2.2 被动模式工作原…

5.3 包管理工具 npm yarn pnpm 对比

基本介绍 工具发布时间开发者定位npm2010 年npm Inc / OpenJS FoundationNode.js 官方包管理器Yarn2016 年Facebook(现 Meta)更快、更可靠的替代方案pnpm2016 年Zoltan Kochan高性能、节省磁盘空间 一、核心机制与设计差异 1. npm(Node Pa…

爬虫基础学习-授权认证,cookie认证,异常处理

验证: HTTPBasicAuthHandler(用户基本的身份验证处理) HTTPPasswordMgrWithDefaultRealm(经常和authhandler一起出现)#创建一个密码管理器 password_mgr urllib.request.HTTPPasswordMgrWithDefaultRealm() #添加进目…

开发避坑指南(34):mysql深度分页查询优化方案

问题语句 SELECT* FROMt_order_log l WHERE1 1 AND l.create_time > 2024-08-28 AND l.create_time < 2024-09-04 23:59:59 LIMIT 10000,10上述查询sql&#xff0c;即使create_time字段已建立索引&#xff0c;但偏移量达到几十万时候&#xff0c;查询耗时将近1分钟&…

Unreal Engine UFloatingPawnMovement

Unreal⚡ Unreal Engine - UFloatingPawnMovement&#x1f3f7; 定义&#x1f9e9; 类继承关系⚙️ 关键特性&#x1f6e0;️ 常见配置&#xff08;Details 面板/代码&#xff09;&#x1f4dd; 使用方法1) 在 Pawn 中添加组件&#xff08;C&#xff09;2) 绑定输入与驱动移动3…

某网盘不好用?有没有类似某网盘的存储软件?阿里云国际站 OSS:云存储的全能助手,你 get 了吗?

在这个数据爆炸的时代&#xff0c;数据存储和管理成为了众多企业和个人面临的一大挑战。想象一下&#xff0c;你是一位视频博主&#xff0c;随着粉丝量的增长&#xff0c;视频素材越来越多&#xff0c;电脑硬盘根本装不下&#xff0c;每次找素材都要花费大量时间。又或者你是一…

安全运维过程文档体系规范

安全运维过程文档体系规范 1. 文档体系总览 本文档体系严格遵循“安全运维生命周期”模型设计&#xff0c;涵盖业务建立、协同、运维管理、识别防御监测、响应和效果评估六个核心阶段。体系旨在通过标准化、规范化的文档管理&#xff0c;确保所有安全运维活动有章可循、有据可查…

【计算机网络】 IPV4和IPV6区别

IPv4 和 IPv6 是两代 互联网协议&#xff08;Internet Protocol&#xff09;&#xff0c;它们的核心作用都是&#xff1a; &#x1f449; 为网络设备分配唯一地址&#xff0c;让它们能在网络中互相通信。1️⃣ 地址长度IPv4&#xff1a;32 位&#xff08;4 字节&#xff09;&am…

哈希:最长连续序列

题目描述&#xff1a;无序的整型数组&#xff0c;求连续最长序列。 输入&#xff1a;nums [100,4,200,1,3,2] 输出&#xff1a;4 &#xff08;因为&#xff1a;最长数字连续序列是 [1, 2, 3, 4]&#xff0c;长度为 4。&#xff09; 说明&#xff1a;连续指的是数字的连续…

python中的生成器

概要python中的生成器是一种特殊的迭代器&#xff0c;如果按照c语言的说法&#xff0c;就是一种特殊的指针&#xff0c;但是python语言的一个语言特性是兼容了函数化编程&#xff0c;类似lambda匿名函数机制。本文重点介绍生成器表达式的使用&#xff0c;是一种很快捷&#xff…

【Coze】Windows 环境下使用 Docker 部署 Coze Studio 的详细指南

一、前言&#xff1a; Coze Studio 是一站式 AI Agent 开发工具。提供各类最新大模型和工具、多种开发模式和框架&#xff0c;从开发到部署&#xff0c;为你提供最便捷的 AI Agent 开发环境。 提供 AI Agent 开发所需的全部核心技术&#xff1a;Prompt、RAG、Plugin、Workflo…

票务系统小程序源码

1. 系统概述 github地址 本系统是一个历经多年迭代和市场检验的综合性智慧票务解决方案。它以小程序和后台管理系统为核心&#xff0c;深度整合了线上OTA渠道、线下多种支付方式以及各类智能硬件&#xff0c;为旅游景区、展馆、活动中心等场景提供稳定、高效、功能完备的一体化…

Python 文件操作与异常处理全解析

目录 一、文件的基本概念 1. 什么是文件 2. 文件操作的核心内容 3. 文件操作的作用 二、文件的基本操作 1. 文件操作三步走 2. 打开文件&#xff1a;open () 函数 2.1 文件路径 2.2 常用 mode 模式 3. 写入文件&#xff1a;write () 函数 4. 关闭文件&#xff1a;cl…

领码方案:通用物联网数据采集低代码集成平台——万物智联时代的黄金钥匙

摘要&#xff1a; 领码方案通过“协议抽象层低代码引擎AI智能中枢”架构&#xff0c;实现物联网设备数据采集、存储、分析的零代码配置化集成。支持200工业协议即插即用&#xff0c;10分钟完成设备上云&#xff0c;数据流转效率提升70%&#xff0c;AI模型调用耗时降低90%。该方…