Table of Contents

WeChat 미니프로그램에서의 로그 분석

이 문서는 WeChat 미니프로그램 AR 환경에서 로그 수집 및 분석을 위한 전체 프로세스를 설명합니다.

WeChat 미니프로그램 vConsole 사용

WeChat 미니프로그램 AR은 실제 기기에서만 실행 및 디버깅이 가능하므로, vConsole을 사용하여 실시간 출력을 확인하는 것이 디버깅의 핵심입니다. 기본 사용법은 WeChat 미니프로그램 공식 문서를 참조하세요.

실제 기기 디버깅에서 vConsole 활성화 방법

AR 화면에서 오른쪽 상단의 첫 번째 버튼 클릭 > 하단 툴바에서 개발 디버깅 클릭 > 디버깅 열기 클릭 > 팝업 창에서 확인을 클릭하여 미니프로그램을 재시작합니다.

디버깅 열기

재시작 후 적용

이후 화면에 vConsole 플로팅 버튼이 지속적으로 표시됩니다.

vConsole 버튼

vConsole 버튼을 클릭하면 현재 실행 중인 모든 로그를 확인할 수 있습니다:

미니프로그램 로그

로그 출처 구분 방법

로그 출처는 일반적으로 다음과 같이 구분할 수 있습니다:

  • WeChat 미니프로그램 시스템 로그: 일반적으로 페이지 라우팅 전환, 컴포넌트 생명주기 변경 시 트리거되며, vConsole에서 파란색 글씨로 표시됩니다.

  • xr-frame 로그: 공식 렌더링 프레임워크에서 출력하며, 로그 내용은 [xr-frame]으로 시작합니다.

  • 사용자 정의 로그: 개발자가 console.log() 등 표준 인터페이스를 통해 출력합니다.

  • 미니프로그램 프레임워크 오류 로그: WeChat 기반 레이어에서 발생하며, 내용은 MiniProgramError로 시작합니다.

  • Mega 미니프로그램 플러그인 로그: Mega 미니프로그램 플러그인 내부에서 출력하며, 로그 내용은 대괄호로 감싼 클래스명으로 시작합니다(예: [MegaTracker]). 현재 주로 예외 포착 시 출력됩니다.

  • 예시 1:

    미니프로그램 로그 예시1

    첫 번째 파란색 부분은 시스템 로그로, 페이지 라우팅 및 로딩 상태를 보여줍니다.

    두 번째 부분은 [xr-frame]으로 시작하며, 렌더링 프레임워크의 생명주기 정보를 표시합니다.

    세 번째 부분은 개발자 정의 출력입니다.

  • 예시 2:

    미니프로그램 로그 예시2

    [MegaTracker], [EasyARSession(xrframe)] 등 클래스명으로 시작하는 로그가 나타나며, 이는 Mega 플러그인이 실행 예외를 포착했음을 의미합니다.

  • 예시 3:

    미니프로그램 로그 예시3

    MiniProgramErrorWAXRFrameRenderContext.js 문구가 나타났으며, 이는 xr-frame 관련 인터페이스 또는 컴포넌트 구성에 문제가 있음을 나타냅니다.

  • 예시 4:

    미니프로그램 로그 예시4

    이 로그는 mega 플러그인의 onCloudLocalization 메서드 실행 중 예외가 발생하여 미니프로그램 프레임워크가 오류를 발생시켰음을 나타냅니다.

Mega 미니프로그램 플러그인의 로그 형식

dumpLog(signal) 메서드로 내보낸 로그는 |로 구분되며, 내용은 순서대로 다음과 같습니다:

  • 타임스탬프: ISO 8601 표준 형식으로, 로그 출력 시의 시스템 시간을 나타냅니다.
  • 로그 레벨: Info, Warning, Error, FatalError를 포함합니다.
  • 클래스명: 대괄호로 감싸여 있습니다.
  • 상세 정보: 구체적인 로그 설명입니다.
  • 호출자: 일반적으로 Unspecified(자연적 실행 과정을 의미함); 사용자 인터페이스 호출로 인한 예외인 경우 User로 표시됩니다.
  • 실행 단계: Unspecified는 주의할 필요 없음을 의미함; 다른 필드가 표시되면 특정 실행 단계에서 예외가 발생했음을 나타냅니다.

미니프로그램 로그

로그 기록 및 전달 방법

로그 수집 및 내보내기 방안을 소개합니다.

vConsole 로그 내보내기

로그 출력 위치에서 오른쪽 복사 버튼을 클릭하여 내보냅니다.

Mega 미니프로그램 플러그인 dump log 인터페이스

dumpLog(signal) 인터페이스를 호출하여 로그 내보내기 프로세스를 제어합니다:

  • true 전달: 기록을 시작합니다.
  • false 전달: 기록을 중지하고 생성된 파일 임시 경로(tempFilePath) 를 반환합니다.

일반적으로 기록 로직을 UI 버튼에 바인딩하고, 기록 시작 시 wx.showToast() 메서드로 기록 시작을 알리고, 기록 종료 시 wx.shareFileMessage() 메서드로 기록된 파일을 WeChat 채팅을 통해 전달하는 것을 권장합니다.

/**
 * Session 기록 로직 처리
 * @param signal true는 기록 시작, false는 기록 종료 및 전달
 */
dumpLog(signal: boolean): void {
  // 인터페이스 호출로 경로 획득
  const logPath = session.dumpLog(signal);
  // signal이 true인 경우, 인터페이스는 빈 문자열을 반환하며 기록 중임을 나타냄
  if (logPath.length == 0) {
      wx.showToast({
          title: '로그 기록 시작',
          icon: 'success',
          duration: 2000
      });
      return;
  }
  // signal이 false인 경우, 반환된 파일 경로 처리
  wx.shareFileMessage({
      filePath: logPath,
      success() {
          wx.showToast({
              title: '로그 전달 성공',
              icon: 'success',
              duration: 2000
          });
      },
      fail() {
          wx.showToast({
              title: '로그 전달 실패',
              icon: 'error',
              duration: 2000
          });
      }
  })
}

중요

Mega 사용 시 프로그램 예외가 아닌 위치 추적 관련 문제가 발생한 경우, 로그 외에 반드시 해당 시점의 화면 녹화 파일과 session dump 파일을 제공하세요. 순수 로그 파일은 참고용에 불과하며, 녹화 영상과 dump 데이터가 문제 해결의 핵심 근거입니다.

관련 주제