GameFrameworkLog = 확성기, ILogHelper = 확성기를 실제로 울려주는 사람(연결 어댑터),
LogLevel = 목소리 크기(디버그/정보/경고/오류/치명적).
등장인물 3명
1.
GameFrameworkLog
•
Debug / Info / Warning / Error / Fatal 메서드가 있음.
•
내부에 s_LogHelper가 설정돼 있어야 실제로 찍힘. (없으면 조용히 무시)
2.
ILogHelper (인터페이스)
•
로그 한 줄을 어디에 어떻게 찍을지를 구현하는 계약서.
•
시그니처: void Log(GameFrameworkLogLevel level, object message);
3.
GameFrameworkLogLevel (레벨)
•
Debug, Info, Warning, Error, Fatal 다섯 단계.
사용 방법
1.
헬퍼 구현: “어디에 찍을지” 정하기(예: Unity 콘솔).
2.
헬퍼 연결: GameFrameworkLog.SetLogHelper(new UnityLogHelper());
3.
찍기: GameFrameworkLog.Info("게임 시작");, ...Error("네트워크 실패"); 등.
(포맷도 지원: GameFrameworkLog.Debug("HP:{0}", hp);)
예시 (Unity)
// 1) Unity용 로그 헬퍼
using UnityEngine;
using GameFramework;
public class UnityLogHelper : GameFrameworkLog.ILogHelper
{
public void Log(GameFrameworkLogLevel level, object message)
{
switch (level)
{
case GameFrameworkLogLevel.Debug: Debug.Log(message); break;
case GameFrameworkLogLevel.Info: Debug.Log(message); break;
case GameFrameworkLogLevel.Warning: Debug.LogWarning(message); break;
case GameFrameworkLogLevel.Error: Debug.LogError(message); break;
case GameFrameworkLogLevel.Fatal: Debug.LogError("<FATAL> " + message); break;
}
}
}
// 2) 초기화(게임 시작 시 한 번만)
void Awake()
{
GameFrameworkLog.SetLogHelper(new UnityLogHelper()); // 헬퍼 연결 필수! :contentReference[oaicite:8]{index=8}
GameFrameworkLog.Info("게임 시작"); // 찍힌다!
}
// 3) 사용 예
void DoDamage(int dmg)
{
GameFrameworkLog.Debug("Damage:{0}", dmg); // 포맷 로그 :contentReference[oaicite:9]{index=9}
if (dmg < 0) GameFrameworkLog.Warning("음수 데미지? 입력 확인 필요");
}
C#
복사
레벨을 언제 쓰나?
•
Debug: 개발 중 내부값 확인(릴리스 땐 보통 끄거나 최소화).
•
Info: 정상 흐름(게임 시작, 스테이지 로드 완료).
•
Warning: 이상하지만 계속 진행 가능한 상황(리트라이, 기본값 사용).
•
Error: 기능 실패(저장 실패, 다운로드 실패) — 사용자에게 안내 필요.
•
Fatal: 심각한 오류(데이터 손상, 재시작 필요). 알림 후 종료/복구 시나리오로.
자주 하는 실수 & 예방
•
헬퍼 안 붙임 → 아무 로그도 안 보임
→ 시작 시 SetLogHelper(...) 꼭 호출.
•
문자열 더하기 남발 → 성능 낭비
→ Debug("HP:{0}", hp) 같은 포맷 오버로드를 쓰자.
•
레벨 혼용 → 콘솔이 지저분
→ 팀 규칙 정해 통일(예: 네트워크 재시도=Warning, 실패=Error).
요약
•
GameFrameworkLog는 로그 API, ILogHelper는 출력 방법, LogLevel은 심각도.
•
헬퍼를 먼저 연결하고, 상황에 맞는 레벨로 메시지를 남기자.
•
이게 되면 버그 추적·운영 이슈 대응이 훨씬 쉬워진다!