Console Window (콘솔 창)
관련 소스 파일
Scripts/Runtime/Debugger/DebuggerComponent.ConsoleWindow.cs
Scripts/Runtime/Debugger/DebuggerComponent.LogNode.cs
Scripts/Runtime/Debugger/DebuggerComponent.ScrollableDebuggerWindowBase.cs
콘솔 창은 Game Framework 내에서 런타임 중 Unity의 로그 메시지를 캡처하고, 표시하며, 관리하는 디버깅 유틸리티입니다. 개발자가 로그를 모니터링하고 필터링하며, 스택 추적을 검사하고 애플리케이션 동작을 분석할 수 있는 맞춤형 인터페이스를 제공합니다. 이 창은 다양한 런타임 디버깅 도구를 제공하는 Debugger 시스템의 일부입니다. 다른 디버깅 창에 대한 정보는 Debugger Component를 참고하세요.
개요 (Overview)
콘솔 창은 Unity의 모든 로그 메시지를 캡처하여 Info, Warning, Error, Fatal 네 가지 유형으로 분류합니다. 메시지는 스크롤 가능한 목록에 표시되며, 메시지 유형에 따라 색상으로 구분됩니다. 개발자는 메시지를 유형별로 필터링하고, 스크롤 위치를 고정하여 최신 로그를 확인할 수 있으며, 선택한 메시지의 상세 스택 추적을 볼 수 있습니다.
기능과 인터페이스 (Features and Interface)
콘솔 창은 개발자가 로그를 관리하고 분석할 수 있도록 다음과 같은 기능을 제공합니다:
•
로그 표시: 타임스탬프, 프레임 수, 메시지 내용을 포함한 로그 메시지 표시
•
필터링: Info, Warning, Error, Fatal 로그를 각각 토글 버튼으로 필터링
•
스크롤 잠금: 최신 로그를 자동으로 표시하도록 스크롤 위치를 고정
•
모두 지우기: 모든 로그 메시지를 삭제하는 버튼 제공
•
스택 추적 뷰어: 선택한 로그 메시지에 대한 상세 스택 추적 표시
•
메시지 개수: 수신된 각 로그 유형별 개수 표시
내부 구조 (Internal Structure)
콘솔 창은 큐(Queue) 구조로 로그를 관리하며, 최대 용량은 설정 가능하게 되어 있습니다. 로그 메시지가 수신되면 이를 처리하여 LogNode 객체로 저장하고, 현재 필터 조건을 통과한 경우 UI에 표시합니다.
LogNode
LogNode 클래스는 단일 로그 항목에 대한 모든 정보를 포함합니다:
•
LogTime (DateTime): 로그가 발생한 UTC 타임스탬프
•
LogFrameCount (int): 로그가 발생한 Unity 프레임 수
•
LogType (LogType): 로그 유형 (Log, Warning, Error, Exception)
•
LogMessage (string): 로그 메시지 내용
•
StackTrace (string): 상세 스택 추적 정보
메시지 흐름 (Message Flow)
로그는 ConsoleWindow에 의해 수신되고, LogNode로 변환되어 큐에 저장된 뒤 UI에 출력됩니다.
설정 옵션 (Configuration Options)
콘솔 창은 다음과 같은 설정 가능한 속성을 제공합니다:
•
LockScroll (bool, 기본값: true): 자동으로 최신 로그로 스크롤
•
MaxLine (int, 기본값: 100): 저장할 최대 로그 개수
•
InfoFilter (bool, 기본값: true): Info 로그 표시 여부
•
WarningFilter (bool, 기본값: true): Warning 로그 표시 여부
•
ErrorFilter (bool, 기본값: true): Error 로그 표시 여부
•
FatalFilter (bool, 기본값: true): Fatal 로그 표시 여부
•
InfoColor (Color32, 기본값: White): Info 로그 색상
•
WarningColor (Color32, 기본값: Yellow): Warning 로그 색상
•
ErrorColor (Color32, 기본값: Red): Error 로그 색상
•
FatalColor (Color32, 기본값: Dark Red): Fatal 로그 색상
이 설정은 SettingComponent를 통해 세션 간에도 유지됩니다.
사용 방법 (Usage)
콘솔 창은 DebuggerComponent의 일부로 기본 포함되어 있습니다. 디버거가 활성화되어 있고 표시 중이라면, 메인 디버거 인터페이스에서 콘솔 창에 접근할 수 있습니다.
코드로 로그 정보 가져오기 (Retrieving Log Information Programmatically)
콘솔 창은 코드에서 로그 정보를 가져올 수 있는 메서드를 제공합니다:
•
GetRecentLogs(List results): 모든 로그 노드 가져오기
•
GetRecentLogs(List results, int count): 지정된 개수만큼 최근 로그 가져오기
이 기능은 진단 정보 전송, 크래시 리포트 생성, 또는 커스텀 디버깅 기능 구현 시 유용합니다.
Reference Pool과의 통합 (Integration with Reference Pool)
콘솔 창은 Game Framework의 객체 풀링 시스템인 ReferencePool을 사용하여 LogNode 인스턴스를 효율적으로 관리합니다. 로그가 큐에서 제거될 때(수동 삭제 혹은 최대 개수 초과) LogNode는 가비지 컬렉션되지 않고 풀에 반환되어 재사용됩니다.