본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진에서 UE_LOG 란 무엇이며, 어떻게 활용할 수 있나요?

by 밝음의기둥 2024. 12. 3.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진에서 UE_LOG 란 무엇이며, 어떻게 활용할 수 있는지 간략히 알아보았습니다.


질문 >

언리얼 엔진에서 UE_LOG 란 무엇이며, 어떻게 활용할 수 있나요?

답변 >

UE_LOG는 언리얼 엔진에서 로그(Log)를 출력하는 데 사용하는 매크로입니다. 이는 디버깅, 개발 도중 발생하는 상태를 추적하거나, 중요 정보를 출력하여 콘솔로그 파일에서 확인할 수 있도록 돕는 도구입니다. UE_LOG는 다양한 로그 카테고리심각도 레벨을 지원하여 개발자가 로그 메시지를 세부적으로 관리하고 분석할 수 있게 합니다.


UE_LOG의 주요 특징

  1. 로그 카테고리(Log Category):
    • 로그 메시지를 그룹화하기 위한 태그입니다. 각 로그는 특정 카테고리에 속하며, 이를 통해 관련 메시지를 필터링하거나 정리할 수 있습니다.
    • 카테고리는 DEFINE_LOG_CATEGORY 매크로를 사용해 정의합니다.
  2. 심각도 레벨(Severity Level):
    • 로그 메시지의 중요도를 나타내는 레벨입니다. 엔진은 로그 레벨에 따라 출력 여부를 조정합니다.
    • 주요 레벨:
      • Log: 일반 정보.
      • Warning: 경고 메시지.
      • Error: 심각한 오류 메시지.
  3. 콘솔 및 로그 파일 출력:
    • 로그는 언리얼 콘솔(Output Log), 디버그 창, 또는 로그 파일에 출력됩니다. 이를 통해 실행 중 발생하는 문제를 쉽게 파악할 수 있습니다.

UE_LOG 사용법

1. 로그 카테고리 정의

로그를 그룹화하려면 로그 카테고리를 정의해야 합니다.

// 헤더 파일에 로그 카테고리 선언
DECLARE_LOG_CATEGORY_EXTERN(MyLogCategory, Log, All);

// 소스 파일에 로그 카테고리 정의
DEFINE_LOG_CATEGORY(MyLogCategory);

2. 로그 메시지 출력

정의된 카테고리를 사용하여 로그 메시지를 출력합니다.

UE_LOG(MyLogCategory, Log, TEXT("This is a log message."));
UE_LOG(MyLogCategory, Warning, TEXT("This is a warning message."));
UE_LOG(MyLogCategory, Error, TEXT("This is an error message."));

  • TEXT() 매크로는 유니코드 문자열을 보장하기 위해 사용됩니다.
  • 출력 메시지는 변수와 결합하여 동적 데이터를 표시할 수도 있습니다.
int32 Value = 42;
UE_LOG(MyLogCategory, Log, TEXT("Value is: %d"), Value);


심각도 레벨 요약

레벨  설명
Log 일반적인 정보 메시지입니다.
Warning 비정상적인 동작이나 잠재적 문제를 나타냅니다.
Error 심각한 오류를 나타냅니다. 게임 실행에 문제가 생기거나 프로그램의 불안정성이 예상됩니다.

활용 예시

  • 게임 로직 디버깅:
    • 특정 이벤트가 발생했는지, 변수의 값이 예상대로 변경되었는지 추적할 때 사용됩니다.
void AMyCharacter::MoveForward(float Value)
{
    if (Value == 0.0f)
    {
        UE_LOG(MyLogCategory, Warning, TEXT("MoveForward input is zero."));
    }
    else
    {
        UE_LOG(MyLogCategory, Log, TEXT("MoveForward input value: %f"), Value);
    }
}

  • 에러 처리 및 경고 표시:
    • 예상치 못한 조건을 감지하여 오류 메시지를 출력하고 문제를 파악합니다.
if (!SomePointer)
{
    UE_LOG(MyLogCategory, Error, TEXT("SomePointer is null! Check initialization."));
}

  • AI 디버깅:
    • AI의 상태를 추적하여 예상대로 동작하지 않을 경우 디버깅에 활용합니다.
UE_LOG(MyLogCategory, Log, TEXT("AI State: %s"), *AIState.ToString());


로그 출력 확인

  1. Output Log 창:
    • 에디터에서 Window > Developer Tools > Output Log를 선택하면 모든 로그 메시지를 실시간으로 확인할 수 있습니다.
  2. 로그 파일 확인:
    • 로그 메시지는 Saved/Logs 디렉토리의 .log 파일에 저장됩니다.
    • 특정 시간 이후 발생한 로그를 파일에서 검토할 수 있습니다.

장점

  1. 디버깅 편의성: 코드를 일일이 수정하거나 중단점을 설정하지 않고도 상태를 실시간으로 확인 가능.
  2. 다양한 필터링 옵션: 로그 카테고리와 심각도 레벨을 사용해 메시지를 정리하고 분석.
  3. 유연성: 문자열, 변수, 포맷팅 데이터를 결합하여 다양한 정보를 출력.

결론

UE_LOG는 언리얼 엔진에서 디버깅과 문제 해결을 위한 필수 도구로, 게임 개발 중 발생하는 정보를 효율적으로 출력하고 관리할 수 있도록 돕습니다. 이를 통해 실시간으로 실행 상태를 추적하고 오류를 조기에 발견하여 개발 생산성을 크게 향상시킬 수 있습니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형