Анализ журналов в 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, чтобы просмотреть все текущие журналы:

Как различать источники журналов
Источники журналов обычно делятся на:
Системные журналы 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:

Первая часть синим текстом является системным журналом и показывает маршрут страницы и состояние загрузки.
Вторая часть начинается с
[xr-frame]и показывает lifecycle-информацию rendering framework.Третья часть является пользовательским выводом разработчика.
Пример 2:

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

В
MiniProgramErrorпоявился текстWAXRFrameRenderContext.js, что указывает на проблему с использованием интерфейсов или конфигурацией компонентов, связанных с xr-frame.Пример 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 возник на конкретном этапе выполнения.

Как записывать и пересылать журналы
Этот раздел описывает способы получения и экспорта журналов.
Экспорт журналов 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-данные являются ключевой основой диагностики.