Table of Contents

Анализ журналов в WeChat Mini Program

Этот документ описывает полный процесс получения и анализа журналов в AR-среде WeChat Mini Program.

Использование vConsole WeChat Mini Program

Поскольку AR в WeChat Mini Program можно запускать и отлаживать только на реальном устройстве, использование vConsole для наблюдения за выводом в реальном времени является ключевым для отладки. Базовое использование см. в официальной документации WeChat Mini Program.

Как включить vConsole при отладке на устройстве

В AR-интерфейсе нажмите первую кнопку в правом верхнем углу > нажмите Development debugging на нижней панели инструментов > нажмите Open debugging > в всплывающем окне нажмите OK, чтобы перезапустить Mini Program.

Открыть отладку

Вступает в силу после повторного открытия

После этого в интерфейсе постоянно будет отображаться плавающая кнопка vConsole.

Кнопка vConsole

Нажмите кнопку vConsole, чтобы просмотреть все текущие журналы:

Журнал Mini Program

Как различать источники журналов

Источники журналов обычно делятся на:

  • Системные журналы WeChat Mini Program: обычно срабатывают при переходах маршрутов страниц и изменениях lifecycle компонентов, в vConsole отображаются синим текстом.

  • Журналы xr-frame: выводятся официальным rendering framework; содержимое журнала начинается с [xr-frame].

  • Пользовательские журналы: выводятся разработчиком через стандартные интерфейсы, например console.log().

  • Журналы ошибок framework Mini Program: выбрасываются нижним уровнем WeChat, содержимое начинается с MiniProgramError.

  • Журналы плагина Mega Mini Program: выводятся внутри плагина Mega Mini Program; содержимое начинается с имени класса в квадратных скобках, например [MegaTracker]. Сейчас в основном выводится при перехвате exception.

  • Пример 1:

    Пример журнала Mini Program 1

    Первая часть синим текстом является системным журналом и показывает маршрут страницы и состояние загрузки.

    Вторая часть начинается с [xr-frame] и показывает lifecycle-информацию rendering framework.

    Третья часть является пользовательским выводом разработчика.

  • Пример 2:

    Пример журнала Mini Program 2

    Появились журналы, начинающиеся с имен классов, таких как [MegaTracker] и [EasyARSession(xrframe)]. Это означает, что плагин Mega перехватил runtime exception.

  • Пример 3:

    Пример журнала Mini Program 3

    В MiniProgramError появился текст WAXRFrameRenderContext.js, что указывает на проблему с использованием интерфейсов или конфигурацией компонентов, связанных с xr-frame.

  • Пример 4:

    Пример журнала Mini Program 4

    Этот журнал показывает, что во время выполнения метода onCloudLocalization в плагине mega возник exception, из-за чего framework Mini Program выбросил ошибку.

Формат журналов плагина Mega Mini Program

Журналы, экспортированные методом dumpLog(signal), разделяются символом |, а содержимое идет по порядку:

  • Timestamp: стандартный формат ISO 8601, показывает системное время печати журнала.
  • Уровень журнала: включает Info, Warning, Error, FatalError.
  • Имя класса: заключено в квадратные скобки.
  • Подробности: конкретное описание журнала.
  • Caller: обычно Unspecified, что означает естественный процесс выполнения; если exception вызван пользовательским вызовом интерфейса, отображается User.
  • Этап выполнения: значение Unspecified означает, что на него не нужно обращать внимание; другие поля означают, что exception возник на конкретном этапе выполнения.

Журнал Mini Program

Как записывать и пересылать журналы

Этот раздел описывает способы получения и экспорта журналов.

Экспорт журналов vConsole

Нажмите кнопку копирования справа от места вывода журнала, чтобы экспортировать его.

Интерфейс dump log плагина Mega Mini Program

Управляйте процессом экспорта журналов, вызывая интерфейс 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
          });
      }
  })
}

Этот пример показывает, как использовать метод session.dumpLog() в компоненте xr-frame для записи и пересылки файла журнала, а также выводить соответствующие Toast-подсказки.


Важно

Если при использовании Mega возникает проблема, связанная с localization или tracking, а не программное exception, кроме журналов обязательно предоставьте файл записи экрана и файл session dump на тот момент. Один только файл журнала может служить лишь косвенной справкой; запись экрана и dump-данные являются ключевой основой диагностики.

Связанные темы