Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

一个UE Log 工具,支持UE打包发行版项目后,查看项目运行的打印日志(仅显示PrintLog,不显示UE引擎运行的日志)

NotificationsYou must be signed in to change notification settings

FHangH/UnrealLogger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 

Repository files navigation

  1. 一个可跨平台,简单,轻量,易维护的UE日志工具
  2. 解决UE项目打包发行版后,查看项目中手动添加的PrintLog等相关操作,无法轻易查看日志的问题
  3. 基于WebSocket通信,可以本地使用,也可以部署云端

1. 结构介绍

UnrealLogger

  • UE_Logger
    • node_modules
    • logger.jsLogger Server
    • package.json
    • package-lock.json
    • websocat.exeWindows Test Websocket Tool
  • UnrealLoggerUE Plugin
  • .gitignore
  • README.md

Logger Server:使用nodejs开发

UE Plugin:使用UE 5.2开发,纯源码,需要使用C++项目编译,只用了UE模块,理论上该插件也支持全平台,足够多的UE版本

websocat.exe:启动Logger Server后,在Windows平台,可以简单使用该测试是否启用成功

2. 使用前提

  1. 系统运行环境需要nodejs, npm
  2. UE项目是C++项目,添加该插件后,项目编译成功

3. 使用方法

部署LoggerServer

  1. 使用控制台进入UE_Logger目录

  2. 运行node logger.js启动Logger Server

    • 默认启动的是127.0.0.1:6666, 刷新间隔16ms
    • 使用带参命令node logger.js 127.0.0.1 7777 100可以该Logger ServerIP, Port, 刷新间隔
    • node logger.js <IP> <Port> <Interval>
  3. 启动后,在Windows环境下,可以直接使用websocat.exe测试

    • 建议新开一个控制台,同样的目录下websocat.exe ws://127.0.0.1:6666

    • 测试数据:

      • {"level":0, "content":"这是普通日志"}
      • {"level":1, "content":"这是警告日志"}
      • {"level":2, "content":"这是错误日志"}

      image-20241016110715719

UE 插件使用

注意:使用前,先确保 Logger Server已经启动,并测试通过

如果:先启动了UE 客户端,再启动 Logger Server,应该是无法连接的,可以在客户端程序中,可以手动或特定时机触发 MakeLoggerSetting方法

  1. 初始化Logger System:初始化相关配置和启动WebSocket服务

    image-20241016111135588

  2. 查看PrintLog方法

    image-20241016111241741

  3. Log Type介绍:

    • Normal -> level: 0
    • Warning -> level: 1
    • Error -> level:2
  4. Log Setting

    image-20241016111441276

  5. Log Screen ColorLog Screen TimeUE printString同理

  6. 测试蓝图:

    image-20241016111612309

    运行结果:

    image-20241016111743694

    image-20241016111755695

  7. 结束打印

    image-20241016111826499

image-20241016111842718

4. UE客户端可能出现的问题

如果你电脑挂了代理,这个应该是代理的问题,关掉代理再测试

5. 云端部署

  1. 测试了一个Linux服务器,开发防火墙的6666端口
  2. 配置运行环境
  3. node logger.js 0.0.0.0:6666
  4. 在本地主机(windows):websocat.exe ws://公网IP:6666即可

image-20241017174733239

更新记录

2024-10-16

image-20241016153058664

多了一个IsUseWorldContextName,目的是方便查看日志打印时,可以看见这条日志打印的所在位置,比如:UI, Actor, Level等等;

优化了Logger Server的打印样式,使用绿色显示连接状态

image-20241016153349930

image-20241016153454816

2024-10-18

发送给Logger Server的日志,默认增加了时间戳UE 发送日志的时间

image-20241018153952526

完善蓝图的使用体验,默认(WorldContextObject=Self, IsUseWorldContextName=True, LogType=Normal, Setting="Logger", LogScreenColor="0.0f, 0.66f, 1.0f, 1.0f", LogScreenTime=2.0f)

节点默认只显示LogTextLogSetting不再是结构体,而是默认折叠起来,和UE蓝图 printString节点相同

image-20241018173231908

2024-10-28

优化了PrintLog节点默认的展开参数为:LogType,LogText,方便快速设置打印日志的类型,打印目标默认为Screen, UE_LOG, UnrealLogger修复了,传入Json字符串,无法正确解析的问题(需要对传入字符内,所有的""做转义)

2024-10-29

  1. 修复打印json的相关问题
  2. 新增节点SetGlobalSetting,可以全局控制打印日志到何处

2024-10-31

经过一段时间的使用,发现LogType还是默认UE_Log-Logger比较舒服

2025-03-05

image-20250305160320327

修改节点MakeLoggerSetting

新增字段:

  • IsEnableQueueMode:是否开启队列模式
  • QueueCheckIntervalSeconds:队列检查的间隔时间

此前在GameInstance中的Init()使用,可能时机过早,丢失了日志信息;

加入队列模式后,同样的情况下,日志不会丢失,而是进入队列中,当初始化完毕可以正常使用之后的新打印,会触发队列检查,将此前无法正常打印的信息打印出来

总之:在GameInstanceInit()之后MakeLoggerSetting()时机过早;解决方案:

  • 在自定义的GameInstance.cpp中声明OnPostInit

    UCLASS()class TEST_TUTORIAL_API UFH_GameInstance : public UGameInstance{GENERATED_BODY()protected:virtualvoidInit()override;UFUNCTION(BlueprintNativeEvent, Category="FH|GameInstance")voidOnPostInit();};
  • Init()中调用OnPostInit()

    voidUFH_GameInstance::Init(){Super::Init();OnPostInit();}voidUFH_GameInstance::OnPostInit_Implementation(){}
  • 在蓝图中定义:OnPostInit()

  • 建议在这之后进行游戏逻辑

image-20250305162119649

这样使用,比较靠谱,如果是在GameMode,PlayerController或其它A*的类型对象中使用,则不必担心这个问题

2025-09-25

  1. 补充了OnConnectedOnConnectionError 的回调,结合2025-03-05 的 方案,处理在UE 中过早使用PrintLog 需要Delay 一段时间的问题,可以在蓝图中调用完MakeLoggerSetting() 之后,从蓝图子系统LoggerSystem 中进行委托绑定

    DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FUnrealLoggerConnectedServer,bool, IsConnected);voidULoggerSystem::OnConnected(){OnUnrealLoggerConnectedServer.Broadcast(true);UE_LOG(Logger, Log,TEXT("WebSocket connected!"));}voidULoggerSystem::OnConnectionError(const FString& Error){OnUnrealLoggerConnectedServer.Broadcast(false);UE_LOG(Logger, Error,TEXT("Connection error: %s"), *Error);}

    image-20250925131940412

  2. 更新了UnrealLogger - LoggerSystem 中的函数MakeLoggerSetting,新增了TagName 标记,确保服务端UE_Logger 在日志中能辨别打印的日志消息源自于哪个客户端,默认为Unknown

    image-20250925130537389

    image-20250925130928836

  3. UE_Logger 中更新了,多客户端 Websocket 链接实例管理,目前可以通过 客户端的TagName 正常区别客户端,同时也客户端和服务器建立链接和断开时,同UID进行区分管理

    image-20250925131241448

About

一个UE Log 工具,支持UE打包发行版项目后,查看项目运行的打印日志(仅显示PrintLog,不显示UE引擎运行的日志)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp