--- title: UE_Log date: 2022-08-31 09:40:26 excerpt: tags: rating: ⭐ --- 说明:本文为Wiki上的RAMA大神文章的大致翻译 ## 显示日志 - 在游戏模式下,你需要在游戏的快捷方式后面加 -Log,才会在游戏中显示。 - 如果想在游戏中看到,需要到Engin.ini中修改参数添加"GameCommandLine=-log,如果没有,则需要按~,输入-Log命令开启。 ## QuickStart UE_LOG(LogTemp, Warning, TEXT("Your message")); 不用设置标签,简单快速。 ## CustomTag 在你的游戏头文件中进行声明: ```c++ //General Log DECLARE_LOG_CATEGORY_EXTERN(YourLog, Log, All); //Logging during game startup DECLARE_LOG_CATEGORY_EXTERN(YourInit, Log, All); //Logging for your AI system DECLARE_LOG_CATEGORY_EXTERN(YourAI, Log, All); //Logging for Critical Errors that must always be addressed DECLARE_LOG_CATEGORY_EXTERN(YourCriticalErrors, Log, All); ``` 这样输出的Log你就可以知道是哪个部分的,这也是UE_Log很有用的原因。 之后在你的游戏Cpp文件中定义: ```c++ //General Log DEFINE_LOG_CATEGORY(YourLog); //Logging during game startup DEFINE_LOG_CATEGORY(YourInit); //Logging for your AI system DEFINE_LOG_CATEGORY(YourAI); //Logging for Critical Errors that must always be addressed DEFINE_LOG_CATEGORY(YourCriticalErrors); ``` ## Log格式化 ### Log Message ```c++ //"This is a message to yourself during runtime!" UE_LOG(YourLog,Warning,TEXT("This is a message to yourself during runtime!")); ``` ### Log an FString ```c++  %s strings are wanted as TCHAR* by Log, so use *FString() //"MyCharacter's Name is %s" UE_LOG(YourLog,Warning,TEXT("MyCharacter's Name is %s"), *MyCharacter->GetName() ); ``` ### Log an Int ```c++ //"MyCharacter's Health is %d" UE_LOG(YourLog,Warning,TEXT("MyCharacter's Health is %d"), MyCharacter->Health ); ``` ### Log a Float ```c++ //"MyCharacter's Health is %f" UE_LOG(YourLog,Warning,TEXT("MyCharacter's Health is %f"), MyCharacter->Health ); ``` ### Log an FVector ```c++ //"MyCharacter's Location is %s" UE_LOG(YourLog,Warning,TEXT("MyCharacter's Location is %s"),     *MyCharacter->GetActorLocation().ToString()); ``` ### Log an FName ```c++ //"MyCharacter's FName is %s" UE_LOG(YourLog,Warning,TEXT("MyCharacter's FName is %s"),     *MyCharacter->GetFName().ToString()); ``` ### Log an FString,Int,Float ```c++ //"%s has health %d, which is %f percent of total health" UE_LOG(YourLog,Warning,TEXT("%s has health %d, which is %f percent of total health"),     *MyCharacter->GetName(), MyCharacter->Health, MyCharacter->HealthPercent); ``` ## Log的颜色设置 ```c++ //"this is Grey Text" UE_LOG(YourLog,Log,TEXT("This is grey text!")); //"this is Yellow Text" UE_LOG(YourLog,Warning,TEXT("This is yellow text!")); //"This is Red Text" UE_LOG(YourLog,Error,TEXT("This is red text!")); ``` 可以看得出第二个参数是是用来控制颜色的。 ## 向客户端传递信息(网络模式): ```c++ PlayerController->ClientMessage("Your Message"); ``` 命令行命令以及Engine.ini配置: Log conventions (in the console, ini files, or environment variables) [cat] = a category for the command to operate on, or 'global' for all categories. 标签,没有设置就显示所有的Log [level] = verbosity level, one of: none, error, warning, display, log, verbose, all, default 关卡,显示某某关卡的Log At boot time, compiled in default is overridden by ini files setting, which is overridden by command line Log console command usage Log list - list all log categories Log list [string] - list all log categories containing a substring Log reset - reset all log categories to their boot-time default Log [cat] - toggle the display of the category [cat] Log [cat] off - disable display of the category [cat] Log [cat] on - resume display of the category [cat] Log [cat] [level] - set the verbosity level of the category [cat] Log [cat] break - toggle the debug break on display of the category [cat] ### Log command line - LogCmds=\"[arguments],[arguments]...\"           - applies a list of console commands at boot time - LogCmds=\"foo verbose, bar off\"         - turns on the foo category and turns off the bar category ### Environment variables Any command line option can be set via the environment variable UE-CmdLineArgs set UE-CmdLineArgs=\"-LogCmds=foo verbose breakon, bar off\" ### Config file In DefaultEngine.ini or Engine.ini: ```ini [Core.Log] global=[default verbosity for things not listed later] [cat]=[level] foo=verbose break ``` ## 其他 Rama后面的一篇文章提供了显示代码行号、函数名称、类名等功能: https://wiki.unrealengine.com/Logs,_Printing_the_Class_Name,_Function_Name,_Line_Number_of_your_Calling_Code!