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


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

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

Как определить источник журналов
Источники журналов обычно можно разделить на:
Системные журналы WeChat Mini Program: обычно срабатывают при переходе между страницами или изменении жизненного цикла компонентов, отображаются синим текстом в vConsole.
Журналы xr-frame: выводятся официальным фреймворком рендеринга, начинаются с
[xr-frame].Пользовательские журналы: выводятся разработчиком через стандартные интерфейсы, такие как
console.log().Журналы ошибок фреймворка мини-программы: генерируются базовым уровнем WeChat, начинаются с
MiniProgramError.Журналы плагина Mega Mini Program: выводятся внутри плагина Mega Mini Program, начинаются с имени класса в квадратных скобках (например, [MegaTracker]), в настоящее время выводятся в основном при перехвате исключений.
Пример 1:

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

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

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