166 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			166 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								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!
							 |