먼저 UE_LOG를 통한 로그는 게임 화면이 아닌 출력 로그 창에서 확인 할 수 있다
UE_LOG는 매크로로 설정되어있고 사용시 3개의 매개변수가 필요하다
1. LOG Category
어느 부분에서 일어난 로그인지 확인 할 수 있는 카테고리
카테고리는 직접 만들수 있으며 기본적으로 제공하는 카테고리를(ex LogTemp) 사용 할 수도 있다
카테고리 생성관련 세가지 함수가 있다
FLogCategory를 만들어 내는거 같다
https://docs.unrealengine.com/4.26/en-US/API/Runtime/Core/Logging/FLogCategory/
- DECLARE_LOG_CATEGORY_EXTERN( 만들카테고리명, DefaultVerbosity, CompileTimeVerbosity )
만들 카테고리명을 선언(Declare)한다는 느낌이다
뒤에 EXTERN때문에 이게 정의된걸 가져오는 느낌을 처음에 많이 받았었는데
사용해본 결과 이 함수가 무조건 나와줘야 정의가 가능했기에 선언으로 생각하고있다
2번째와 3번째 매개변수는 같은 Enum형식(ELogVerbosity)을 매개변수로 받는다
https://docs.unrealengine.com/4.26/en-US/API/Runtime/Core/Logging/ELogVerbosity__Type/
verbosity : 다변
다변 : 말이 많음(?) ㅋㅋㅋㅋ
말이 많다는게 상세한 정보를 그만큼 나타낸다는 의미같다
이 verbosity 속성이 이해가 잘 안되서 찾다가
밑의 사이트를 보았는데 자세히 설명이 되어있었다
https://unrealcommunity.wiki/logging-lgpidy6i
아직 잘 모르겠다 시발 이거 너무 어렵다
이해한걸로는 프로그램에 기본 verbosity Level이 있고
그 level 보다 더 높으면 그 로그문은 게임코드로 컴파일되지않고 무시된다 라는 말인데
이렇게 조절함으로 로깅을 할때 나오는 세부정보 수준을 조절해 원하는 정보만 골라보는것이다
로그의 세부정보가 뭔지를 잘 모르겠다
로그의 세부정보 단계라고 하면 이해할거같은데
일단 여기까지 봐야할듯하다 존내 봐도 모르겠어서 넘 시간 많이 뺏김 계속 생각해봐야할듯
https://unrealcommunity.wiki/logs-printing-messages-to-yourself-during-runtime-n5ifosqc
여기 한번 보기
- DEFINE_LOG_CATEGORY( 만들카테고리명 );
위의 DECLARE_LOG_CATEGORY_EXTERN(이하 EXTERN) 과 무조건 같이 써주어야하는 함수이다
DECLARE_LOG_CATEGORY_EXTERN으로 선언을 하고 정의를 이 DEFINE_LOG_CATEGORY(이하DEFINE)에서 하는것이다
그래서 보통 선언을 헤더파일에 하듯이 헤더파일에 EXTERN을 넣고
이 카테고리를 써줄 파일에 include하는 형식으로 사용하는거 같고
정의는 한번만 해야하기에 CPP 파일에 DEFINE을 사용하는거 같다
그래서 테스트로 실행해 봤다
- DEFINE_LOG_CATEGORY_STATIC
감 잡은 사람도 있겠지만 STATIC이 붙어 내부링크속성을 가진다
다른 파일에서는 사용할 수 없다는 뜻
만들기에는 이 함수 하나만 사용해도 되어 편하다
입맛에 맞춰
DECLARE_LOG_CATEGORY_EXTERN
DEFINE_LOG_CATEGORY
를 사용해 범용적으로 사용할건지
DEFINE_LOG_CATEGORY_STATIC
를 사용해 단일 파일에 간단하게 사용할건지 선택하면 되겠다
2. LOG Level
위에 vorbosity의 ENUM형과 같다
3. 로그로 띄울 메세지
printf를 사용하듯이 사용하면된다
컴파일러가 유니코드로 실행된다면 유니코드로 만들어줘야한다 (TEXT or L 을 붙이기)