언리얼 C++ 로그 출력

전지훈·2021년 5월 17일
0

Unreal

목록 보기
2/25
post-thumbnail

출력 로그

UE_LOG(LogTemp, Log, TEXT("CharacterName :: %s / HP :: %d / Stamina :: %f"), *MyCharacter->GetName(), MyCharacter->Hp, MyCharacter->Stamina);

스크린 로그

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Debug %f"), 123.0f));

커스텀 로그

MyLog.h

#pragma once

#include "EngineMinimal.h"

DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity);

MyLog.cpp

#include "MyLog.h"

DEFINE_LOG_CATEGORY(CategoryName);
#define MYLOG_CALLINFO (/*FString(__FILE__) + TEXT("->") + */FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")"))
#define MYLOG_S(CategoryName, Verbosity) UE_LOG(CategoryName, Verbosity, TEXT("%s"), *MYLOG_CALLINFO)
#define MYLOG(CategoryName, Verbosity, Format, ...) UE_LOG(CategoryName, Verbosity, TEXT("%s - %s"), *MYLOG_CALLINFO, *FString::Printf(Format, ##__VA_ARGS__))
#define MYLOG_SCREEN(Key, TimeToDisplay, DisplayColor, Format, ...) \
	GEngine->AddOnScreenDebugMessage(Key, TimeToDisplay, DisplayColor, FString::Printf(TEXT("%s - %s"), *MYLOG_CALLINFO, *FString::Printf(Format, ##__VA_ARGS__)))

#define MYLOG_BOTH(CategoryName, Verbosity, Key, TimeToDisplay, DisplayColor, Format, ...) \
{ \
	UE_LOG(CategoryName, Verbosity, TEXT("%s - %s"), *MYLOG_CALLINFO, *FString::Printf(Format, ##__VA_ARGS__)); \
	GEngine->AddOnScreenDebugMessage(Key, TimeToDisplay, DisplayColor, FString::Printf(TEXT("%s - %s"), *MYLOG_CALLINFO, *FString::Printf(Format, ##__VA_ARGS__))); \
}

보통 커스텀 로그 매크로는 어디서든 사용이 가능해야 편하기 때문에, 일반적으로 사용되는 최상위 헤더인 CoreMinimal.h를 대체하는 게임의 최상위 헤더를 선언하고 그곳에 작성하여 활용하는 것이 일반적이다.

로그 상세 수준 (Log Verbosity Level)

  • Fatal
    항상 콘솔 및 로그 파일에 출력되며 로그가 비활성화된 경우에도 작동이 중단된다.
  • Error
    콘솔 및 로그 파일에 출력되며, 이 로그는 기본적으로 빨간색으로 표시된다.
  • Warning
    콘솔 및 로그 파일에 출력되며, 이 로그는 기본적으로 노란색으로 표시된다.
  • Display
    콘솔및 로그 파일에 출력된다.
  • Log
    로그 파일에는 출력되지만, 게임 내의 콘솔에서는 출력되지 않지만, 에디터의 출력 로그 탭을 통해서는 계속 출력된다.
  • Verbose
    로그 파일에는 출력되지만, 게임 내의 콘솔에는 출력되지 않는다. 일반적으로 자세한 로깅 및 디버깅에 사용된다.
  • VeryVerbose
    로그 파일에는 출력되지만, 게임 내의 콘솔에는 출력되지 않는다. 이 수준의 로그는 일반적으로 대량의 로그를 출력하는 상세한 로깅에 사용된다.

이득우의 언리얼 c++ 게임 개발의 정석

profile
10%의 확신과 90%의 어.. 이게 왜 되지?

0개의 댓글