Log 작성하기
카테고리: UnrealEngine
업데이트:
1. 로그 카테고리 만들기
언리얼 프로젝트를 만들면 프로젝트 이름으로 헤더 파일과 cpp 파일이 자동으로 만들어져 있습니다. 이제 헤더 파일에서 카테고리를 정의하고 해당 헤더 파일을 EngineMinimal.h 대신 해당 헤더 파일을 include 한 뒤 로그를 작성하면 됩니다.
// ProjectName.h
// 카테고리 정의
DECLARE_LOG_CATEGORY_EXTERN(카테고리 이름, Log, All);
2. 로그 작성하기
카테고리를 정의하고 이제 로그를 호출하는 애셋에서 다음과 같이 UE_LOG를 이용해 다음과 같은 형식으로 로그를 호출합니다.
#include "ProjectName.h" // EngineMinimal.h 대신
...
// LOG 출력
UE_LOG(카테고리 이름, Warning, TEXT("Actor Name : %s, ..."), *GetName());
3. 로그 매크로 설정하기
일반적으로 UE_LOG를 이용하면 C언어에서 printf와 같이 출력하는 기능만 합니다. 따라서 매크로를 이용해 자동으로 어느 함수의 몇 번째 줄에서 호출했는지 기본적인 정보를 출력하도록 매크로를 만들면 다음과 같습니다.
우선 어디서 호출했는지에 대한 정보를 다음과 같이 매크로로 만들어둡니다.
// ProjectName.h
// FString(__FUNCTION__) : 호출한 함수 이름
// FString::FromInt(__LINE__) : 호출한 라인 넘버
#define LOG_CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")"))
이제 매크로를 추가로 만들어 호출하면 카테고리를 자동으로 선택하고 호출한 정보를 로그 콘솔에 출력하도록 만들어보겠습니다.
// ProjectName.h
// 기본적인 로그 정보
#define LOG_INFO(로그레벨) UE_LOG(카테고리이름, 로그레벨, TEXT("%s"), *LOG_CALLINFO)
이제 UE_LOG에 호출 정보를 추가하고 카테고리를 따로 선택하지 않도록 만들어보겠습니다.
// ProjectName.h
// FString::Printf(Format, ##__VA_ARGS__) : String Formatting
#define LOG_WRITE(로그 레벨, Format, ...) UE_LOG(카테고리이름, 로그레벨, TEXT("%s %s"), *LOG_CALLINFO, *FString::Printf(Format, ##__VA_ARGS__))
그리고 사용하는 코드는 다음과 같습니다.
LOG_INFO(Warning);
LOG_WRITE(Warning, TEXT("Actor Name : %s"), *GetName());
댓글남기기