Table of Contents

Análise de logs no WeChat Mini Program

Este documento apresenta o fluxo completo para obter e analisar logs no ambiente AR do WeChat Mini Program.

Usar vConsole do WeChat Mini Program

Como AR no WeChat Mini Program só pode ser executado e depurado em dispositivo físico, usar vConsole para observar a saída em tempo real é essencial para a depuração. Para uso básico, consulte a documentação oficial do WeChat Mini Program.

Como habilitar vConsole durante depuração em dispositivo físico

Na interface AR, clique no primeiro botão no canto superior direito > clique em Development debugging na barra de ferramentas inferior > clique em Open debugging > na janela pop-up, clique em OK para reiniciar o Mini Program.

Abrir depuração

Efeito após reabrir

Depois disso, a interface exibirá continuamente o botão flutuante vConsole.

Botão vConsole

Clique no botão vConsole para ver todos os logs em execução no momento:

Logs do Mini Program

Como distinguir fontes de logs

As fontes de logs geralmente podem ser divididas em:

  • Logs do sistema WeChat Mini Program: normalmente acionados em mudanças de rota de página ou mudanças de lifecycle de componentes, exibidos em azul no vConsole.

  • Logs xr-frame: impressos pelo framework oficial de renderização, com conteúdo iniciado por [xr-frame].

  • Logs personalizados do usuário: impressos pelo desenvolvedor por interfaces padrão como console.log().

  • Logs de erro do framework Mini Program: lançados pela camada inferior do WeChat, com conteúdo iniciado por MiniProgramError.

  • Logs do plugin Mega Mini Program: impressos internamente pelo plugin Mega Mini Program, com conteúdo iniciado pelo nome da classe entre colchetes, como [MegaTracker]. Atualmente são emitidos principalmente ao capturar exception.

  • Exemplo 1:

    Exemplo de log do Mini Program 1

    A primeira parte em azul é o log do sistema, mostrando a rota da página e o estado de carregamento.

    A segunda parte começa com [xr-frame] e mostra informações de lifecycle do framework de renderização.

    A terceira parte é saída personalizada do desenvolvedor.

  • Exemplo 2:

    Exemplo de log do Mini Program 2

    Aparecem logs iniciados por nomes de classe como [MegaTracker] e [EasyARSession(xrframe)], o que significa que o plugin Mega capturou uma runtime exception.

  • Exemplo 3:

    Exemplo de log do Mini Program 3

    WAXRFrameRenderContext.js aparece em MiniProgramError, indicando que houve problema ao usar interfaces ou configurações de componentes relacionadas ao xr-frame.

  • Exemplo 4:

    Exemplo de log do Mini Program 4

    Este log indica que ocorreu uma exception durante a execução do método onCloudLocalization no plugin mega, fazendo o framework Mini Program lançar um erro.

Formato de log do plugin Mega Mini Program

Os logs exportados pelo método dumpLog(signal) são separados por |, e o conteúdo em sequência é:

  • Timestamp: formato padrão ISO 8601, indicando o horário do sistema no momento da impressão do log.
  • Nível do log: inclui Info, Warning, Error, FatalError.
  • Nome da classe: envolvido por colchetes.
  • Detalhes: descrição específica do log.
  • Caller: normalmente Unspecified, indicando processo de execução natural; se a exception foi causada por chamada de interface do usuário, será exibido User.
  • Etapa de execução: exibido como Unspecified significa que não precisa de atenção; outros campos indicam que a exception ocorreu em uma etapa de execução específica.

Logs do Mini Program

Como gravar e encaminhar logs

Apresenta soluções para obter e exportar logs.

Exportar logs do vConsole

Clique no botão copiar à direita do local onde o log é impresso para exportar.

Interface dump log do plugin Mega Mini Program

Controle o fluxo de exportação de logs chamando a interface dumpLog(signal):

  • Passar true: iniciar gravação.
  • Passar false: parar gravação e retornar o caminho temporário do arquivo (tempFilePath) gerado.

Normalmente recomenda-se vincular a lógica de gravação a um botão de UI. Ao iniciar a gravação, use o método wx.showToast() para indicar o início; ao terminar, use o método wx.shareFileMessage() para encaminhar o arquivo gravado por chat WeChat.

/**
 * processa a logica de gravacao de Session
 * @param signal true inicia a gravacao; false encerra a gravacao e encaminha
 */
dumpLog(signal: boolean): void {
  // chama a interface para obter o caminho
  const logPath = session.dumpLog(signal);
  // quando signal e true, a interface retorna uma string vazia para indicar que esta gravando
  if (logPath.length == 0) {
      wx.showToast({
          title: '开始记录日志',
          icon: 'success',
          duration: 2000
      });
      return;
  }
  // quando signal e false, processa o caminho de arquivo retornado
  wx.shareFileMessage({
      filePath: logPath,
      success() {
          wx.showToast({
              title: '日志转发成功',
              icon: 'success',
              duration: 2000
          });
      },
      fail() {
          wx.showToast({
              title: '日志转发失败',
              icon: 'error',
              duration: 2000
          });
      }
  })
}

Este exemplo demonstra como usar o método session.dumpLog() em um componente xr-frame para gravar e encaminhar arquivos de log, além de fornecer os prompts Toast correspondentes.


Importante

Se ao usar Mega você encontrar problemas relacionados a localization ou tracking, e não uma exception do programa, além dos logs, certifique-se de fornecer o arquivo de gravação de tela e o arquivo session dump daquele momento. Um arquivo de log puro só pode oferecer referência lateral; a gravação de tela e os dados dump são a base central da solução de problemas.

Tópicos relacionados