안선생의 개발 블로그
[UE5] UE_LOG 언리얼 엔진에서의 로깅 본문
언리얼 엔진에서의 로깅
디버깅 시 로그는 코드 실행 논리에 대한 세부 정보를 제공하는 귀중한 툴입니다. 함수 간에 전달되는 데이터 값을 조사하고 잠재적인 문제를 보고할 수 있습니다.
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 는 표시할 메시지입니다. 로그와 비슷하게 화면 디버그 메시지에서 포맷 지정자 및 변수를 사용할 수 있습니다.
실행결과
더 자세한 내용은 아래 공식 사이트에서 확인 할 수 있습니다.
언리얼 엔진에서의 로깅
언리얼 엔진에서의 로깅과 관련된 정보를 살펴봅니다.
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 |