일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- C언어
- DirectX12
- RenderTargetView
- 프로그래밍
- vertex
- DirectXTK
- Direct Init
- engine
- Input Assembler
- CommandList
- 다이렉트X 튜토리얼
- 동기화
- DESC
- c
- C++
- Direct3D Init
- swapchain
- 다이렉트X
- 전처리문
- 다이렉트 초기화
- CPU
- View
- 다중표본화
- GPU
- 코딩
- 게임수학
- UE4
- DirectX
- 세팅
- Direct3D
- Today
- Total
비타Cpp
Logging Setting - 로깅 환경의 설정 본문
언리얼 엔진에서는 로깅 환경을 위해 기본적으로 UE_LOG라는 매크로를 제공한다.
이 매크로의 사용법은 아래와 같다.
UE_LOG(카테고리, 로깅 수준, 형식 문자열, 인자...)
이렇게 출력되는 로그는 에디터의 출력 로그 창에서 확인할 수 있다.
이렇게 기록 된는 로그들은 프로젝트 폴더의 Saved폴더 내에 있는 .log 확장자 파일로 저장된다.
로그의 중요도를 나타내는 로깅수준은 크게 메시지, 경고, 에러 이렇게 세 가지로 나뉜다. 그리고 이 중요도에 따라 출력 로그 창에 표시되는 텍스트 색상은 흰색, 노란색, 붉은색으로 표시된다. 이 로깅 수준별 색상은 에디터 메뉴에서 변경이 가능하다.
로그 매크로는 다양한 데이터를 하나의 문자열로 조합해 출력할 수 있다. C언어의 printf 함수와 같은 형식으로 가변 인자를 받을 수도 있다.
문자열을 정의할 때는 앞서 설명한 것처럼 모든 플랫폼에서 2바이트 문자열을 지원하는 TEXT매크로를 사용하는 것이 바람직하다. 여기서 주의할 점은 문자열을 관리하는 기본 클래스로 언리얼 엔진은 FString 클래스를 제공하는데, FString으로 선언된 변수에서 문자열을 얻어오려면 반드시 * 연산자를 앞에 지정해줘야 한다. 다음은 이를 사용한 예시다.
FString::Printf(TEXT("Actor Name : %s, ID : %d, Location X : %.3f"), *GetName(), ID, GetActorLocation().X)
//출력 결과 - Actor Name : 액터이름, ID : 아이디, Location X : X좌표값
모든 로그에는 분류를 위해 카테고리가 지정된다. 이미 언리얼 엔진에는 다양한 로그 카테고리가 선언되어 있다. 하지만 개인적으로 필요한 카테고리가 필요하다면, 커스텀 카테고리를 선언하면 된다.
언리얼 엔진은 로그 카테고리를 선언하기 위해 두개의 매크로를 제공한다. 하나는 선언부에서 사용하는 DECLARE_LOG_CATEGORY_EXTERN이고, 나머지 하나는 구현부의 DEFINE_LOG_CATEGORY이다.
다음은 커스텀 로그 카테고리를 선언하는 예이다.
//header (선언부)
DECLARE_LOG_CATEGORY_EXTERN(MyCategory, Log, All);
//cpp (구현부)
DEFINE_LOG_CATEGORY(MyCategory);
//PlayerCharacter클래스의 Tick 메서드 부분에 로그를 출력하는 매크로를 사용.
void APlayerCharacterBase::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
UE_LOG(MyCategory, Warning, TEXT("Actor Name : %s"), *GetName());
}
'Unreal Engine' 카테고리의 다른 글
UE4 - 게임 플레이 프레임워크 클래스들 (0) | 2022.01.29 |
---|---|
UE4 C++ 프로젝트의 동작 (0) | 2021.09.24 |