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));
#pragma once
#include "EngineMinimal.h"
DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity);
#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를 대체하는 게임의 최상위 헤더를 선언하고 그곳에 작성하여 활용하는 것이 일반적이다.