[UE5] C++ 로그 출력하기

UE5에서 간단하게 쓸만한 로그 출력의 종류는 총 두 가지가 있다.

꽤 여러 용도로 자주 쓰일 기능이라서, 하나씩 복습 겸 포스팅.

참고 자료

(1) UE_LOG 매크로를 사용한 로그

UE_LOG(LogTemp, Warning, TEXT("Hello"));

UE_LOG 매크로를 활용한다. 세 개의 각 인자의 의미는 각각 LogCategory, Verbosity, FormatString 이다.

Verbosity Level은 다음과 같이 7개의 종류가 존재한다. (UnrealCommunity Wiki 발췌)

| Verbosity Level | Printed in Console? | Printed in Editor's Log? |                      Notes                       |
|-----------------|---------------------|--------------------------|--------------------------------------------------|
| Fatal           | Yes                 | N/A                      | Crashes the session, even if logging is disabled |
| Error           | Yes                 | Yes                      | Log text is coloured red                         |
| Warning         | Yes                 | Yes                      | Log text is coloured yellow                      |
| Display         | Yes                 | Yes                      | Log text is coloured grey                        |
| Log             | No                  | Yes                      | Log text is coloured grey                        |
| Verbose         | No                  | No                       |                                                  |
| VeryVerbose     | No                  | No                       |                                                  |

주의할 점은, Fatal 레벨은 프로그램을 강제로 종료시키고 에러 보고 창을 띄워버린다.

프로그램을 살려둔 상태에서 가장 높은 에러 레벨은 Error인 것.

 

Verbose와 VeryVerbose는 출력되지 않는다. 그러나 로그 파일에는 출력된다고 하는데, 일단 기본 값에서는 로그 파일에도 안나오는 것 같다. 따로 설정해줘야 하는 듯.

 

다음과 같은 로그를 출력해보았다.

constexpr auto Number = 100;
UE_LOG(LogTemp, VeryVerbose, TEXT("%d + %d = %d!"), Number, 5, Number + 5);
UE_LOG(LogTemp, Verbose, TEXT("%d + %d = %d!"), Number, 5, Number + 5);
UE_LOG(LogTemp, Log, TEXT("%d - %d = %d!"), Number, 5, Number + 5);
UE_LOG(LogTemp, Display, TEXT("%d * %d = %d!"), Number, 5, Number + 5);
UE_LOG(LogTemp, Warning, TEXT("%d / %d = %d!"), Number, 5, Number + 5);
UE_LOG(LogTemp, Error, TEXT("%lf / %lf = %lf!"), Number, 5.0, Number / 5.0);
// UE_LOG(LogTemp, Fatal, TEXT("%lf / %lf = %lf!"), Number, 7.5, Number / 7.5);

UE_LOG 매크로는 4번째 인자부터 자동으로 포맷 인자로 인식하기 때문에, printf처럼 쓰면 된다.

 

 

이 로그를 출력하면 다음과 같이 나온다.

언리얼 에디터에서 출력 로그
Rider에서 나타난 로그

 

(2) 화면에 메시지 출력

const auto Name = GetName();
GEngine->AddOnScreenDebugMessage(INDEX_NONE, 5.f, FColor::White, FString::Printf(TEXT("Your name is %s!"), *Name));

 

GEngine->AddOnScreenDebugMessage 메서드를 사용한다. FString::Printf와 결합하여 사용할 수 있다.

각 인자는 Key, 시간, 색상, 텍스트 이다.

여기에서 Key는 메시지 출력 시 화면에 여러 번 나오는걸 방지하기 위한 고유 키이다. 고유 키 없이 계속 쌓이게 하려면, -1 또는 INDEX_NONE으로 설정한다.

 

요로코롬 화면 왼쪽 위에 나타난다.

 

 

 

 

댓글

Designed by JB FACTORY