언리얼 엔진은 로깅 환경을 위해 UE_LOG라는 매크로를 제공하고 있다.
UE_LOG(카테고리, 로깅 수준, 형식 문자열, 인자)
로그를 보려면 출력 로그를 윈도우를 통해 확인할 수 있다.
에디터 상당의 (창) > (개발자 툴)> (출력 로그) 메뉴를 선택하면 하단에 출력 로그를 확인할 수 있다. 또는 프로젝트의 Saved 폴더 내에 있는 log폴더를 확인하면 된다.
로그의 중요도는 메시지Log, 경고 Warning, 에러 Error 이렇게 세 가지로 나뉘어 있다. 각각 흰색 노란색 붉은색으로 윈도우 표시가 된다.
색상을 바꾸고 싶으면 (편집) > (에디터 개인설정) 왼쪽의 (외형) 섹션에서 로깅 수준에 대한 색상을 변경할 수 있다.
로그 매크로는 다양한 데이터를 하나의 문자열로 조합하도록 C의 printf와 같은 형식 문자열 기능을 지원한다.
FString 클래스를 언리얼 엔진에서는 제공을 하는데, 문자열정보를 FString 클래스에서 얻어오기 위해서는 반드시 *연산자를 사용해야한다.
예시코드)
ABLOG(Warning, TEXT("Actor Name : %s, ID : %d, Location X : %.3f"), *GetName(), ID, GetActorLocation().X);
책에서는 공용 매트로 설정을 하기 위해 ArenaBattle이라는 카테고리를 이용한 로그 카테고리를 설정한다.
작성 소스코드는 다음과 같다.
1) ArenaBattle.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "EngineMinimal.h"
//로그 출력 카테고리 정의 및 메크로 선언
/*
함수 설명
ABLOG_S : 코드가 들어있는 파일 이름과 함수, 그리고 라인정보를 추가해 arenabattle 카테고리로 로그를 남긴다. 로그를 사용한
함수의 실행시점을 파악할 때 유용
ABLOG:ABLOG_S 정보에 형식 문자열로 추가 정보를 지정해 로그를 남긴다.
*/
DECLARE_LOG_CATEGORY_EXTERN(ArenaBattle, Log, All);
#define ABLOG_CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString ::FromInt(__LINE__)+ TEXT(")"))
#define ABLOG_S(Verbosity) UE_LOG(ArenaBattle, Verbosity, TEXT("%s"), *ABLOG_CALLINFO)
#define ABLOG(Verbosity, Format, ...) UE_LOG(ArenaBattle, Verbosity, TEXT("%s%s"), *ABLOG_CALLINFO, *FString::Printf(Format, ##__VA_ARGS__))
2) ArenaBattle.cpp
#include "ArenaBattle.h"
#include "Modules/ModuleManager.h"
DEFINE_LOG_CATEGORY(ArenaBattle);
IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, ArenaBattle, "ArenaBattle" );
3) Fountain2.cpp 의 BeginPlay(); 부분
// Called when the game starts or when spawned
void AFountain2::BeginPlay()
{
Super::BeginPlay();
//UE log 작성선언
//FString으로 선언된 변수에서 문자열 정보를 언어오려면 반드시 *를 지정해 주어야한다.
ABLOG_S(Warning);
ABLOG(Warning, TEXT("Actor Name : %s, ID : %d, Location X : %.3f"), *GetName(), ID, GetActorLocation().X);
}
추가적으로 Fountain의 #include "ArenaBattle.h"를 해주어야 한다.
어설션
어설션 코드란 ? 반드시 확인하고 넘어가야 하는 점검 코드를 의미
언리얼 엔진의 C++프레임워크는 상황에 따라 사용할 수 있는 어설션 구문을 제공한다. 다만 언리얼 엔진을 초기로 설치한 순간에는 디버깅 기호가 설치되어있지않기 때문에 에픽게임즈 런처를 열고 해당 엔진의 버전의 옵션을 선택해 디버깅을 위한 편집기기호를 wjrdyd해서 설치해야한다.
'unreal engine' 카테고리의 다른 글
[UE5.0] Online Subsystem (2) 온라인 서브 시스템의 기본 설정 및 Steam Cross Platform 사용법 (0) | 2022.12.12 |
---|---|
[UE5] Online Subsystem (1) 온라인 서브 시스템이 무엇인가? (0) | 2022.12.12 |
언리얼엔진5 cmd를 활용한 thirdperson 기본 탬플릿 클라이언트/서버 생성 방법 (1) | 2022.09.05 |
언리얼엔진4 입문 1. 기본 프로젝트 생성 및 세팅 (0) | 2022.06.07 |