안선생의 개발 블로그

[UE5] UE_LOG 언리얼 엔진에서의 로깅 본문

언리얼/언리얼 C++

[UE5] UE_LOG 언리얼 엔진에서의 로깅

안선생 2023. 10. 25. 14:18

언리얼 엔진에서의 로깅

디버깅 시 로그는 코드 실행 논리에 대한 세부 정보를 제공하는 귀중한 툴입니다. 함수 간에 전달되는 데이터 값을 조사하고 잠재적인 문제를 보고할 수 있습니다.

 

UE_LOG

UE_LOG 는 로그 파일에 서식이 지정된 메시지를 로깅하는 매크로입니다.

 

사용방법

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

앞에 순서부터 로그 카테고리, 로그 상세 수준 ,로그 내용이다.

 

로그 상세

Fatal 로깅이 비활성화된 경우에도 항상 치명적인 오류를 콘솔 및 로그 파일에 출력한 후 크래시를 발생시킵니다.
Error 오류를 콘솔 및 로그 파일에 출력합니다. 커맨드릿과 에디터가 오류를 수집하고 보고합니다. 오류 메시지의 결과로 커맨드릿 실패가 발생합니다.
Warning 경고를 콘솔 및 로그 파일에 출력합니다. 커맨드릿과 에디터가 경고를 수집하고 보고합니다.
Display 메시지를 콘솔 및 로그 파일에 출력합니다.
Log 메시지를 로그 파일에는 출력하지만 콘솔에는 출력하지 않습니다.
Verbose 해당 카테고리에 대해 상세 로깅이 활성화된 경우 상세 메시지를 로그 파일에 출력합니다. 일반적으로 상세 로깅에 사용됩니다.
VeryVerbose 상세 메시지를 로그 파일에 출력합니다. VeryVerbose 로깅이 활성화된 경우 이는 다른 경우에 스팸으로 출력될 상세 로깅에 사용됩니다.

 

테스트

위에 있는  로그 상세를 전부 실행시켜보겠습니다.

UE_LOG(LogTemp, Fatal, TEXT("Test1"));
UE_LOG(LogTemp, Error, TEXT("Test2"));
UE_LOG(LogTemp, Warning, TEXT("Test3"));
UE_LOG(LogTemp, Display, TEXT("Test4"));
UE_LOG(LogTemp, Log, TEXT("Test5"));
UE_LOG(LogTemp, Verbose, TEXT("Test6"));
UE_LOG(LogTemp, VeryVerbose, TEXT("Test7"));

 

실행결과

Fatal 로그 상세 때문에 크러쉬가 나온 상황이다. 

 

다시 주석 처리후 실행

//UE_LOG(LogTemp, Fatal, TEXT("Test1"));
UE_LOG(LogTemp, Error, TEXT("Test2"));
UE_LOG(LogTemp, Warning, TEXT("Test3"));
UE_LOG(LogTemp, Display, TEXT("Test4"));
UE_LOG(LogTemp, Log, TEXT("Test5"));
UE_LOG(LogTemp, Verbose, TEXT("Test6"));
UE_LOG(LogTemp, VeryVerbose, TEXT("Test7"));

 

실행결과

 

로그 상세 레벨

상세 레벨콘솔에 출력됨에디터 로그에 출력됨텍스트 컬러추가 정보
Fatal 해당 없음 해당 없음 세션이 크래시됩니다.
Error 빨간색 해당 없음
Warning 노란색 해당 없음
Display 회색 해당 없음
Log 아니요 회색 해당 없음
Verbose 아니요 아니요 해당 없음 해당 없음
VeryVerbose 아니요 아니요 해당 없음 로그 마스크 및 특수 열거형 값을 사용하여 텍스트 컬러를 구성할 수 있습니다.

 

기본적인 데이터 타입 로깅

데이터 타입예시

 

FString

UE_LOG(LogTemp, Warning, TEXT("An Actor's name is %s"), *Actor->GetName());

Bool

UE_LOG(LogTemp, Warning, TEXT("The boolean value is %s"), ( bExampleBool ? TEXT("true"): TEXT("false") ));

Integer

UE_LOG(LogTemp, Warning, TEXT("The integer value is: %d"), ExampleInteger);

 

Float

UE_LOG(LogTemp, Warning, TEXT("The float value is: %f"), ExampleFloat);

FVector

UE_LOG(LogTemp, Warning, TEXT("The vector value is: %s"), *ExampleVector.ToString());

여러 지정자

UE_LOG(LogTemp, Warning, TEXT("Current values are: vector %s, float %f, and integer %d"), *ExampleVector.ToString(), ExampleFloat, ExampleInteger);

 

화면 디버그 메시지

if (GEngine)
{
    GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("iiii4.tistory"));
}
  • 첫 번째 입력 파라미터인 *key*는 고유한 인티저 키를 사용하여 동일한 메시지가 여러 번 추가되지 않도록 방지합니다.
  • 두 번째 입력 파라미터인 TimeToDisplay 는 플로트를 사용하여 메시지가 사라지기 전 메시지를 표시할 시간(초)을 지정합니다.
  • 세 번째 입력 파라미터인 DisplayColor 는 텍스트를 표시할 컬러를 취합니다.
  • 네 번째 입력 파라미터인 DebugMessage 는 표시할 메시지입니다. 로그와 비슷하게 화면 디버그 메시지에서 포맷 지정자 및 변수를 사용할 수 있습니다.

 

실행결과

 

 

더 자세한 내용은 아래 공식 사이트에서 확인 할 수 있습니다.

https://docs.unrealengine.com/5.3/ko/logging-in-unreal-engine/#%EC%9E%90%EC%B2%B4%EB%A1%9C%EA%B7%B8%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EC%A0%95%EC%9D%98

 

언리얼 엔진에서의 로깅

언리얼 엔진에서의 로깅과 관련된 정보를 살펴봅니다.

docs.unrealengine.com

 

'언리얼 > 언리얼 C++' 카테고리의 다른 글

[UE5] 언리얼 라이브 코딩  (0) 2023.10.31
[UE5] 생성자, BeginPlay,Tick 알아보기  (1) 2023.10.28
[UE5] C++ 클래스 생성하기  (0) 2023.10.27
[UE5] 언리얼 클래스  (0) 2023.10.26
[UE5] UPROPERTY() 매크로  (0) 2023.10.24