Table of Contents

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

В этой статье представлен полный процесс сбора и анализа журналов в среде AR WeChat Mini Program.

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

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

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

В интерфейсе AR нажмите первую кнопку в правом верхнем углу > нажмите Разработка и отладка на нижней панели инструментов > нажмите Открыть отладку > в появившемся окне нажмите Подтвердить, чтобы перезапустить мини-программу.

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

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

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

Кнопка vConsole

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

Журналы мини-программы

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

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

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

  • Журналы xr-frame: выводятся официальным фреймворком рендеринга, начинаются с [xr-frame].

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

  • Журналы ошибок фреймворка мини-программы: генерируются базовым уровнем WeChat, начинаются с MiniProgramError.

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

  • Пример 1:

    Пример журналов мини-программы 1

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

    Вторая часть начинается с [xr-frame], отображая информацию о жизненном цикле фреймворка рендеринга.

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

  • Пример 2:

    Пример журналов мини-программы 2

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

  • Пример 3:

    Пример журналов мини-программы 3

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

  • Пример 4:

    Пример журналов мини-программы 4

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

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

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

  • Метка времени: формат ISO 8601, системное время при выводе журнала.
  • Уровень журнала: включает Info, Warning, Error, FatalError.
  • Имя класса: в квадратных скобках.
  • Подробная информация: описание журнала.
  • Инициатор: обычно Unspecified (естественный процесс выполнения); если исключение вызвано пользовательским вызовом интерфейса, отображается User.
  • Фаза выполнения: Unspecified означает, что не требует внимания; другие значения указывают, что исключение произошло на определенной фазе выполнения.

Журналы мини-программы

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

Описание методов получения и экспорта журналов.

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

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

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

Управление экспортом журналов через вызов интерфейса dumpLog(signal):

  • Передать true: начать запись.
  • Передать false: остановить запись и вернуть временный путь к файлу (tempFilePath).

Обычно рекомендуется привязывать логику записи к кнопке UI. При начале записи выводить уведомление через wx.showToast(), а по окончании записи пересылать записанный файл через чат WeChat с помощью wx.shareFileMessage().

/**
 * Обработка логики записи 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 возникают проблемы с локализацией или отслеживанием, а не сбои программы, помимо журналов обязательно предоставьте записи экрана и файлы session dump за тот период. Чистые файлы журналов могут служить лишь косвенной ссылкой, тогда как записи экрана и данные dump являются основой для анализа проблем.

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