일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 델리게이트
- UE4 커스텀로그
- 약참조
- stl
- 선택정렬
- unorder_map
- 람다
- UML관련
- 크리티컬섹션
- 람다사용정렬
- 알고리즘
- 자료구조
- dataasset
- 데이터애셋
- 강참조
- moreeffectiveC++
- 언리얼엔진구조체
- 언리얼가비지컬렉터
- 스마트포인터
- enumasByue
- C++최적화
- C++
- map
- 정렬
- BFS
- 애셋로드
- UELOG
- UE_LOG
- 프로그래머스
- 정렬알고리즘
- Today
- Total
기억을 위한 기록들
[UE4-CPP] 기본로그(UE_LOG)에 관하여 본문
언리얼에서 C++로 작성하다가 디버깅용 로그 관련 설정 정리용 글이다. (자세한 설명보다는 개인기록용입니다.)
우선 블로그 작성을 위한 기본 템플릿 3인칭 C++를 만들어주었다.
프로젝트 이름은 blogCPP이다.
언리얼에서 기본으로 제공하는 로그 출력 방법의 기본 형식은 다음과 같다.
UE_LOG(LogTemp, Log, TEXT("Hi"));
게임을 실행하고 해당 로그가 있는 함수를 실행하면
출력 로그에 찍히게 된다.
UE_LOG('로그 카테고리', '로그 상세 수준', '로그 내용');
로그 카테고리는 우선 재쳐두고, 로그 상세 수준을 먼저 보면
로그 상세 수준
로그는 출력되는 로그의 종류를 분류해주고 있다.
사용할 수 있는 종류를 보면
Log
로그 파일 출력 O / 게임 내의 콘솔 출력 X / 에디터의 출력 로그 탭을 통해 계속해서 출력된다.
Warning
콘솔 및 로그 파일 출력 O, 노란색으로 표시.
Error
콘솔 및 로그 파일 출력 O, 빨간색으로 표시.
Display
콘솔 및 로그 파일 출력 O
Fatal
콘솔 및 로그 파일 출력 O, 로그가 비활성화된 경우에도 작동이 중단.
Verbose
로그 파일 출력 O, 게임내의 콘솔 출력 X, 일반적으로 자세한 로깅 및 디버깅에 사용
VeryVerbose
로그 파일 출력 O, 게임내의 콘솔 출력 X, 일반적으로 대량의 로그를 출력하는 상세한 로깅 사용
출력 테스트
결과
Fatal 주석해제 후 출력 결과
로그 카테고리
다시 앞부분으로가서 로그 카테고리는 출력된 로그가 어떤 시스템에서 발생한 로그인지 알려주는 역할을 한다.
여기서는 LogTemp를 작성하고 있는데, 이것은 특정한 카테고리에 속하지 않고 임의로 띄우는 로그이다.
언리얼 엔진에서는 카테고리를 90개 이상을 기본적으로 제공한다.
어떤 카테고리에서 로그가 발생했는지 알려줄 수 있기에 로그 출력 코드를 작성할 때 제대로 된 카테고리를 분류해서 넣어주기만 한다면 로그가 제공하는 정보가 좀 더 상세해질 수 있다.
커스텀 로그 카테고리 만들기
엔진에서 제공하는 카테고리 이외에 직접 만들어서 사용할수도 있다.
프로젝트명. h로 가서 (여기서는 blogCPP.h) 아래와 같이 추가해준 뒤
DECLARE_LOG_CATEGORY_EXTERN(BLOG_LOG, Log, All);
프로젝트명. cpp에는 헤더 파일에서 선언해준 로그명을 추가해준다.
DEFINE_LOG_CATEGORY(BLOG_LOG);
그러면 이전에 출력하던 로그에서 사용할 수 있게 된다.
해당 로그를 사용할 클래스 헤더에
#include "blogCPP.h"를 해주고 출력하게 되면
아래와 같이 변경이 된다.
로그 포맷(Log Formatting)
단순히 텍스트만 출력하는 게 아니라 상황에 따라 데이터의 내용을 출력할 때도 있다.
FString
로그에서는 % s는 TChar* 타입을 받는다. 이것은 *FString에 대응.
UE_LOG(LogTemp, Log, TEXT("Character Name :: %s"), *MyCharacter->GetName());
bool
UE_LOG(LogTemp, Log, TEXT("Character is Die :: %s"), MyCharacter->IsDie ? TEXT("true") : TEXT("false"));
int
UE_LOG(LogTemp, Log, TEXT("Character HP :: &d"), MyCharacter->Hp);
float
UE_LOG(LogTemp, Log, TEXT("Character Stamina :: %f"), MyCharacter->Stamina);
FVector
UE_LOG(LogTemp, Log, TEXT("Character Location :: %s"), MyCharacter->GetActorLocation().ToString());
FName
UE_LOG(LogTemp, Log, TEXT("Character FName :: &d"), MyCharacter->GetFName().ToString());
여러 자료형
UE_LOG(LogTemp, Log, TEXT("CharacterName :: &s / HP :: &d / Stamina :: %f"), *MyCharacter->GetName(), MyCharacter->Hp, MyCharacter->Stamina);
참고 :
https://hyo-ue4study.tistory.com/381
'UnrealEngine > UE4 - CPP' 카테고리의 다른 글
[UE4-CPP] FString 을 float으로 변환하기 메모 (0) | 2021.07.14 |
---|---|
[UE4-CPP] 개인메모 PrimitiveComponent Overlap C++ 구현 (0) | 2021.06.20 |
[UE4-CPP] 커스텀 로그(LOG) 만들기 (0) | 2021.05.07 |
[UE4-CPP] 언리얼엔진4(UE4)에서 C++ 구조체 만들고 데이터 테이블 사용하기 (2) | 2021.04.02 |
[UE4-CPP] 커스텀 플러그인 C++에서 사용 시 설정 하나 (0) | 2021.03.18 |