UE_LOG
문서
https://docs.unrealengine.com/5.3/ko/logging-in-unreal-engine/
언리얼 엔진에서의 로깅
언리얼 엔진에서의 로깅과 관련된 정보를 살펴봅니다.
docs.unrealengine.com
디버깅 시 서식이 지정된 메시지를 로깅하는 매크로이다.
// UE_LOG(CategoryName, Verbosity, Value)
UE_LOG(LogTemp, Warning, TEXT("Hello World"));
// UE_LOG(CategoryName, Verbosity, Format, Value)
UE_LOG(LogTemp, Warning, TEXT("%s"), FString("Hello World"));

CategoryName : Output Log의 어떤 카테고리에 지정될지 정한다.

Verbosity : 로그의 상세 레벨을 정의한다. (위험한 정도?)
| 상세 레벨 | 콘솔에 출력 | 에디터 로그에 출력 | 텍스트 컬러 | 추가 정보 |
| Fatal | O | 해당 없음 | 해당 없음 | 세션이 크래시 남 |
| Error | O | O | 빨간색 | 해당 없음 |
| Warning | O | O | 노란색 | 해당 없음 |
| Display | O | O | 회색 | 해당 없음 |
| Log | X | O | 회색 | 해당 없음 |
| Verbose | X | X | 해당 없음 | 해당 없음 |
Format : 데이터 타입
%s에 대응될 때는 실제 배열이 들어가는 게 아니면, 포인터 연산자를 지정해줘야 한다.
FString
UE_LOG(LogTemp, Warning, TEXT("%s"), *ExampleActor->GetName());
Bool
UE_LOG(LogTemp, Warning, TEXT("%s"), (bExampleBool ? TEXT("true") : TEXT("false")));
Integer
UE_LOG(LogTemp, Warning, TEXT("%d"), ExampleInteger);
Float
UE_LOG(LogTemp, Warning, TEXT("%f"), ExampleFloat);
FVector
UE_LOG(LogTemp, Warning, TEXT("%s"), *ExampleVector.ToString());
여러 포맷
UE_LOG(LogTemp, Warning, TEXT("%s, %f, %d"), *ExampleVector.ToString(), ExampleFloat, ExampleInteger);
AddOnScreenDebugMessage
로그 메시지를 뷰포트 화면에 출력하는 함수이다.
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(0, 10.f, FColor::Blue, FString("OnScreenDebugMessage"));
}
첫 번째 인자 : Key 값
두 번째 인자 : 출력 시 화면에 남아있는 시간
세 번째 인자 : 출력 메시지 색상
네 번째 인자 : 출력 메시지
커스텀 로그 매크로 만들기
로그 매크로를 일일이 작성하기 귀찮으니, 커스텀 로그 매크로를 통해 간편화 해보자.
접근하기 쉬운 클래스를 하나 만들고 다음과 같이 코드를 작성한다.
이러면 LogTestNetWork라는 새로운 로그 카테고리가 생성된 것이다.
// .h
DECLARE_LOG_CATEGORY_EXTERN(LogTestNetWork, Log, All);
// .cpp
DEFINE_LOG_CATEGORY(LogTestNetWork);
다음으로 로그 매크로를 만들어보자.
다음과 같이, 두 가지 매크로를 정의한다.
TEST_LOG 매크로는 실제로 내가 로그를 작성할 코드에서 사용할 매크로이다.
UE_LOG와 똑같이, 로그 카테고리와 Verbosity, 문자열 등을 인자로 받는다.
LOG_CALLINFO 매크로는 이 로그 매크로를 호출한 함수의 이름을 반환하는 매크로이다.
이를 통해서 "호출된 함수 이름", "로그 문자" 형식으로 로그를 찍어서 보다 로그 추적이 원활하도록 한다.
// .h
// __FUNCTION__ -> const char* (ANSI)
#define LOG_CALLINFO ANSI_TO_TCHAR(__FUNCTION__)
#define TEST_LOG(LogCat, Verbosity, Format, ...) \
UE_LOG(LogCat, Verbosity, TEXT("%s | %s"), LOG_CALLINFO, *FString::Printf(Format, ##__VA_ARGS__))
다음과 같이 사용
void ATestPlayerController::BeginPlay()
{
TEST_LOG(LogTestNetWork, Log, TEXT("%s"), TEXT("Begin"));
Super::BeginPlay();
TEST_LOG(LogTestNetWork, Log, TEXT("%s"), TEXT("End"));
}
서버 - 클라이언트 확인하기 로그
UE_LOG(LogTemp, Warning, TEXT("[Player] LocalRole=%s"), *UEnum::GetDisplayValueAsText(GetLocalRole()).ToString());
'📘Unreal Engine > 📝Unreal Engine' 카테고리의 다른 글
| [Unreal Engine] 파티클 시스템 (0) | 2024.06.18 |
|---|---|
| [Unreal Engine] 머리카락(털) 추가 / UGroomComponent (0) | 2024.05.23 |
| [Unreal Engine] 어서트 (Assert) (0) | 2024.05.21 |
| [Unreal Engine] 에셋 경로 참조하기 (0) | 2024.03.20 |
| [Unreal Engine] UPROPERTY, UFUNCTION 지정자 (0) | 2024.03.10 |