⌨️ Log 출력
프로그래밍 과정 중 꼭 필요한 Debug를 도와줄 Log 작성 코드를 셋팅해보았다.

CLog 라는 이름의 헤더파일과 cpp 파일을 각각 생성한 뒤, Log와 Print를 도와줄 static 함수들을 변수 유형별로 선언해두었다.

Log를 출력할 때 분류하기 유용한 카테고리는 DEFINE_LOG_CATEGORY_STATIC 명령어를 통해 생성할 수 있다.

DEFINE_LOG_CATEGORY_STATIC 명령어의 매개변수로는 카테고리명과, 로그유형, 로그형식을 전달해주면 된다.
로그유형과 로그형식에 따라 종류가 매우 많으므로 간단히 정리해보았다.
ELogVerbosity는 로그를 어떻게 출력할 것인지의 정보를 Enum 값으로 가져 상세 목록을 제공한다.
⌨️ ELogVerbosity::Enum Type - 로그 유형
- NoLogging : 로그를 사용하지 않는다.
- Fatal : 파일 및 에디터 로그에 빨간색으로 출력 후 프로그램 종료
- Error : 파일 및 에디터 로그에 빨간색으로 출력
- Warning : 파일 및 에디터 로그에 노란색으로 출력
- Display : 파일 및 콘솔에 출력
- Log : 파일 및 에디터 로그에 출력
- Verbose : 로그 파일에 출력
- VeryVerbose : 로그 파일에 상세 내용을 포함하여 출력
- All : VeryVerbose 와 같다.
이 아래는 Log mask 값과 특별한 Enum 값들로 직접 사용하지 않는다. - NumVerbosity
- VerbosityMask
- SetColor
- BreakOnLog
이러한 로그 유형을 사용하여 UE_LOG 함수를 사용하면 로그를 출력할 수 있다.

매개변수로 카테고리, 로그 유형, 로그 형식(Format), 출력 내용을 전달하면된다.

이와 같은 방법으로 int32, float, FString, FVector, FRotator, UObject 의 내용을 로그로 출력해보았다.
UObject는 있으면 Not Null을 출력하고, 없으면 Null을 출력하도록 하였다.
이때 주의할점은 Unreal에서는 회전 순서를 Roll - Pitch - Yaw로 디자인의 관점에서 순서를 정의하지만, C++클래스에선 개발자의 관점에서 Pitch - Yaw - Roll 순으로 회전 순서를 출력한다.
따라서 Actor의 Z축으로 45도 회전한 후 Rotator 값을 Log로 출력하면 P = 0, Y = 45, R = 0 순서로 회전값이 출력된다.
⌨️ __FILE__, __FUNCTION__, __LINE__

__FILE__, __FUNCTION__, __LINE__ 매크로를 이용하여 액터 정보를 출력하는 Log 함수를 작성해보았다.
__FILE__ 매크로는 현재 액터가 존재하는 디렉터리를 출력하므로 가장 오른쪽에 존재하는 "\\" 문자열을 찾아 해당 문자열의 오른쪽만 자르면 "파일명.cpp" 형태의 String 값만 출력되도록 만들 수 있다.
__FUNCTION__은 현재 로그가 출력된 함수명을 출력하고,
__LINE__은 현재 코드가 실행되고 있는 라인 넘버를 출력한다.
⌨️ Print 출력
로그가 아닌 뷰포트에 Print를 수행하기 위해선 Engin.h 헤더를 포함하여 GEngin 객체의 함수를 사용해야 한다.

AddOnScreenDebugMessage 함수를 통해 블루프린트의 Print String 함수와 같은 기능을 수행할 수 있다.
InKey, InDuration, InColor 값은 헤더파일에서 디폴트 매개변수로 선언해둔채로 사용했다.
InDuration은 뷰포트에 띄울 지속시간, InColor는 글씨 색상을 의미한다.
InKey 는 동일한 메시지가 여러 번 추가되는 것을 방지하는 고유 키 이다. 즉, 키 값을 설정하면 뷰포트에 프린트가
Print,
Print,
Print,
Print,
형식으로 되는 것이 아니라, Print 한 위치를 기억한 뒤, 해당 위치에서 내용을 갱신하게 된다.

실행결과, 성공적으로 뷰포트에 Print 내용들이 출력됨을 볼 수 있었다.
참조
https://docs.unrealengine.com/4.26/en-US/API/Runtime/Core/Logging/ELogVerbosity__Type/
ELogVerbosity::Type
Enum that defines the verbosity levels of the logging system.
docs.unrealengine.com
[UE5] Unreal Engine 5 길라잡이 - 5. 로깅 방법
언리얼 엔진은 코딩의 흐름을 파악하고 디버깅을 용이하게 만들어주는 '로깅' 기능을 제공한다. 이는 일반적으로 UE_LOG라는 매크로를 활용하며, UE_LOG 매크로를 사용하고 응용하는 방법에 대해
velog.io
https://docs.unrealengine.com/5.1/en-US/API/Runtime/Engine/Engine/UEngine/AddOnScreenDebugMessage/1/
UEngine::AddOnScreenDebugMessage
Add a [FString](API\Runtime\Core\Containers\FString) to the On-screen debug message system.
docs.unrealengine.com