Skip to main content

Gerar e analisar registros

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:
  • Visualizar registros de depuração no Log Inspector ou em um editor de texto.
  • Definir vários níveis de registro para seus registros de depuração.
  • Gerenciar e alternar perspectivas usando o Log Inspector.
Nota

Nota

O desafio prático para esse emblema está traduzido para japonês, espanhol (América Latina) e português (Brasil). Para definir o idioma do seu Trailhead Playground, siga essas instruções. A tradução pode estar desatualizada. Se você não conseguir passar no desafio usando as instruções traduzidas, defina o idioma para inglês e a localidade para Estados Unidos. Em seguida, tente novamente.

Consulte o emblema Trailhead no seu idioma para saber mais sobre como aproveitar a experiência de Trailhead em outros idiomas.

Visualizar registros de depuração

Como um bom comandante, você revisa os registros do sistema para verificar se tudo está funcionando como deveria. Os registros são um dos melhores lugares para identificar problemas com um sistema ou programa. Usando o Developer Console, você pode examinar vários registros de depuração para entender como seu código funciona e identificar problemas de desempenho.

Visualizar registros no editor de texto

Visualizar um registro de depuração é simples. Para gerar um registro, vamos executar a classe EmailMissionSpecialist do Apex que você criou anteriormente.

Você pode visualizar seu registro de duas maneiras.
  • Antes da execução, ative Open Log (Abrir registro) na janela Enter Apex Code (Inserir código do Apex). O registro é aberto após seu código ter sido executado.
  • Após a execução, clique duas vezes no registro que aparece na guia Logs (Registros).
Vamos experimentar o primeiro método.
  1. Selecione Debug (Depurar) | Open Execute Anonymous Window (Abrir janela Executar no modo anônimo).
  2. A janela Enter Apex Code (Inserir código do Apex) exibe o último código que você inseriu para execução. Se for diferente do código abaixo, exclua-o e copie o código abaixo. Substitua Enter your email address (Insira seu endereço de email) pelo seu endereço de email.
    EmailMissionSpecialist em = new EmailMissionSpecialist();
    em.sendMail('Enter your email address', 'Flight Path Change', 
       'Mission Control 123: Your flight path has been changed to avoid collision '
       + 'with asteroid 2014 QO441.');
  3. Selecione a opção Open Log (Abrir registro).
  4. Clique em Execute (Executar).

O registro de execução que você vê provavelmente parece uma confusão de números e palavras, portanto, vamos falar sobre como você pode ler e entender dados de registro.

Resultados do registro

Ler seus dados de registro

Vamos executar a classe EmailMissionSpecialist novamente, mas desta vez vamos introduzir um erro. Depois, vamos encontrar o registro resultante na guia Logs (Registros).

  1. Selecione Debug (Depurar) | Open Execute Anonymous Window (Abrir janela Executar no modo anônimo). Forneça um endereço de email inválido, como testingemail.
    EmailMissionSpecialist em = new EmailMissionSpecialist();
    em.sendMail('testingemail', 'Flight Path Change', 
       'Mission Control 123: Your flight path has been changed to avoid collision '
       + 'with asteroid 2014 QO441.');
  2. Desmarque a opção Open Log (Abrir registro).
  3. Clique em Execute (Executar). Depois que executar o código, você verá uma caixa de diálogo que inclui o erro. Executar erro anônimo
  4. Clique em OK, depois clique duas vezes no novo registro na guia Logs (Registros). Se não souber ao certo qual registro é o mais recente, clique no cabeçalho da coluna Time (Horário) para classificar os registros pelo horário em que foram gerados.Resultados do registro
Você pode ler um registro de depuração identificando o que cada coluna representa.
  • Timestamp (Carimbo de data e hora) – O horário em que o evento ocorreu. O carimbo de data e hora está sempre no fuso horário do usuário e no formato HH:mm:ss:SSS.
  • Event (Evento) – O evento que acionou a entrada do registro de depuração. Por exemplo, no registro de execução que você gerou, o evento FATAL_ERROR é registrado no log quando é determinado que o endereço de email é inválido.
  • Details (Detalhes) – Detalhes sobre a linha do código e o nome do método onde o código foi executado.
Opções de exibição de resultados de registro

Você pode mudar o que é exibido no registro de execução selecionando This Frame (Este quadro) (a), Executable (Executável) (b) ou Debug Only (Apenas depuração) (c). Selecionar essas opções exibe para você apenas certos tipos de eventos. Por exemplo, Apenas depuração exibe eventos USER_DEBUG. Você também pode filtrar diferentes partes do registro usando Filter (Filtrar) (d). Insira um nome de método ou qualquer outro texto que esteja buscando especificamente e o registro filtra seus resultados.

Também é possível visualizar o registro de depuração como um registro em bruto, o que exibe mais informações. Selecione File (Arquivo) | Open Raw Log (Abrir registro em bruto). O carimbo de data e hora em um registro em bruto mostra o tempo decorrido em nanosegundos (entre parênteses) desde o início do evento.

Carimbo de data e hora, evento e detalhes em um registro

Essa combinação de carimbo de data e hora, evento e detalhes fornece insights valiosos sobre o funcionamento de seu código e os erros que ocorrem.

Todas essas informações são ótimas, mas e se você quiser fazer uma busca rápida de certos valores no registro de depuração? Afinal de contas, você tem muitas outras responsabilidades como comandante. Uma excelente maneira de fazer isso é usando o método System.debug() no Apex.

O bom do System.debug() é que você pode adicioná-lo em qualquer parte de seu código para rastrear valores, o que ajuda você a depurar seu próprio código.

Aqui está a sintaxe para System.debug(). Para exibir uma mensagem:
System.debug('Your Message');
Para exibir o valor de uma variável:
System.debug(yourVariable);
Para exibir um valor rotulado:
System.debug('Your Label: ' + yourVariable);

Usar o Log Inspector

O prático Log Inspector existe para facilitar a visualização de grandes registros! O Log Inspector utiliza exibições de painel de registro para fornecer diferentes perspectivas de seu código. Confira selecionando Debug (Depurar) | View Log Panels (Exibir painéis de registro).

Nota

A opção de menu Depurar | Exibir painéis de log só fica disponível quando você está visualizando uma guia de log de depuração. Se, por exemplo, você estiver visualizando a guia de log bruto, a opção fica esmaecida.

Os painéis de registro alteram a estrutura do registro para fornecer outras informações úteis sobre o contexto para o código sendo executado. Por exemplo, diferentes painéis mostram a fonte, os tempos de execução, o tamanho do heap e a hierarquia de chamada. (OK, nós sabemos, mais jargão de geek – esta seção é relativamente técnica. Lembre-se, nós estamos nos familiarizando com o Developer Console, não com os pormenores da depuração. Então, se alguma coisa não fizer sentido para você, tente não se preocupar muito.)

Esses painéis de registro interagem uns com os outros para ajudar você a depurar seu código. Por exemplo, quando você clica em uma entrada de registro no painel de registro Execution Log (Registro de execução) ou Stack Tree (Árvore de pilha), os outros painéis (Source (Origem), Source List (Lista de origem), Variables (Variáveis) e Execution Stack (Pilha de execução)) são atualizados para exibir informações relacionadas.

Todos os painéis de registro
Estes painéis estão disponíveis no Log Inspector.
  1. Stack Tree (Árvore de pilha) – Exibe entradas de registro dentro da hierarquia de seus objetos e de sua execução usando um modo de exibição em árvore de cima para baixo. Por exemplo, se uma classe chama uma segunda classe, a segunda classe é mostrada como filha da primeira.
  2. Execution Stack (Pilha de execução) – Exibe o item selecionado de baixo para cima. Exibe a entrada de registro, seguida pela operação que a chamou.
  3. Execution Log (Registro de execução) – Exibe cada ação que ocorreu durante a execução de seu código.
  4. Source (Origem) – Exibe o conteúdo do arquivo de origem, indicando a linha de código que estava sendo executada quando a entrada de registro selecionada foi gerada.
  5. Source List (Lista de origem) – Exibe o contexto do código sendo executado quando o evento foi registrado. Por exemplo, se você selecionar a entrada de registro gerada quando o valor de endereço de email incorreto foi inserido, o painel de registro Lista de origem mostra execute_anonymous_apex.
  6. Variables (Variáveis) – Exibe as variáveis e seus valores atribuídos que estavam no escopo quando o código que gerou a entrada de registro selecionada foi executado.
  7. Execution Overview (Visão geral de execução) – Exibe estatísticas para o código que está sendo executado, incluindo o tempo de execução e o tamanho do heap.

O que é o Perspective Manager e como você pode alternar perspectivas?

Uma perspectiva é um layout de painéis agrupados. Por exemplo, a perspectiva Debug (Depurar) predeterminada exibe os painéis de registro Execution Log (Registro de execução), Source (Origem) e Variables (Variáveis), enquanto a perspectiva Analysis (Análise) exibe os painéis de registro Tree (Árvore), Execution Log (Registro de execução), Execution Stack (Pilha de execução) e Execution Overview (Visão geral de execução).

Você pode escolher uma perspectiva selecionando Debug (Depurar) | Switch Perspectives (Alternar perspectivas) ou Debug (Depurar) | Perspective Manager. Sim, é tão fácil quanto alternar entre diferentes painéis de comunicação – e muito mais fácil do que tentar decifrar registros de seu Especialista de missão, da Estação espacial da Terra e do Controle da missão Marte, todos na mesma exibição.

Você também pode criar sua própria perspectiva. Configure sua combinação de painéis preferida para ser exibida e, em seguida, selecione Debug (Depurar) | Save Perspective As (Salvar perspectiva como). Insira um nome para sua perspectiva e depois clique em OK.

Manipular dados de registro para encontrar o que você precisa

Você está ciente de que o motor 3 às vezes não funciona como deveria. Ter esse motor funcionando a plena capacidade é crucial durante sua manobra para se desviar do asteroide 2014 QO441. Mas toda vez que você tenta executar uma verificação dos sistemas, também recebe informações de um robô deprimido em sua nave espacial. Ele envia relatórios confusos prevendo uma revolta dos robôs, o que aumenta o número de linhas em seu registro e potencialmente faz com que você deixe passar informações valiosas.

Você precisa de uma maneira para controlar a quantidade de informações registradas. Felizmente para você, o Developer Console faz exatamente isso, com a ajuda de categorias e níveis de registro.

Categorias de registro

Uma categoria de registro é o tipo de informação que está sendo registrada.

Aqui estão duas categorias de registro comuns.
  • ApexCode, que registra eventos relacionados ao código do Apex e inclui informações sobre o início e o fim de um método do Apex.
  • Database (Banco de dados), que inclui registros relacionados a eventos de banco de dados, incluindo consultas de linguagem de manipulação de dados (DML, Database Manipulation Language), SOSL e SOQL (sobre as quais vamos falar mais tarde).

Níveis de registro e como alterá-los

Parece que o motor 3 está tendo problemas novamente. Enquanto você pesquisa os registros para ver o que poderia ter causado esses problemas, você vê mensagens de aviso sobre a revolta do robô melancólico.

Um robô só não faz revolta, então você não se preocupa muito com os avisos. O motor defeituoso, porém, é uma preocupação urgente. E se, no meio de todos esses dados de registro, você perder as mensagens que estão de fato relacionadas ao motor 3? Os níveis de registro estão aí para ajudar!

Os níveis de registro controlam a quantidade de detalhes que é registrada para cada categoria de registro. Os seguintes níveis estão disponíveis no Developer Console, desde a menor quantidade de dados registrados (nível = NONE) até a maior (nível = FINEST).
  • NONE (NENHUM)
  • ERROR (ERRO)
  • WARN (AVISO)
  • INFO (INFORMAÇÕES)
  • DEBUG (DEPURAÇÃO)
  • FINE (BOM)
  • FINER (ÓTIMO)
  • FINEST (MELHOR)

Os níveis de registro são cumulativos. Por exemplo, se o nível de registro é INFO para um evento, a informação de registro nos níveis ERROR e WARN também são incluídas. Mas se seu nível de registro é ERROR, você só recebe mensagens de erro. Você não recebe mensagens de aviso nem nenhuma outra informação de registro para essa categoria de registro.

As informações que um nível de registro fornece também dependem do evento de registro. Diferentes eventos de registro começam a registrar em níveis de registro específicos. Por exemplo, alguns eventos do ApexCode começam a registrar no nível INFO. Se você configurar ERROR como nível de registro, você não receberá nenhuma informação de registro para esses eventos.

Para obter as informações que está procurando, modifique os níveis de registro para diferentes eventos. Você quer suprimir o registro quando o robô salva mensagens sobre a suposta revolta no banco de dados. Para isso, basta configurar o nível de registro para a categoria Database (DB) como NONE ou ERROR.

Você pode configurar esses níveis selecionando Debug (Depurar) | Change Log Levels (Alterar níveis de registro).

Selecionar níveis de registro

Na guia General Trace Settings for You (Configurações gerais de rastreamento para você), clique em Add/Change (Adicionar/Alterar) (1). Na janela Change Debug Level (Alternar nível de depuração), selecione o nível de registro para cada categoria. Lembre-se de utilizar os níveis de registro de maneira sensata. Se seu nível de registro é FINEST (2), seu código pode alcançar os limites de registro e levar mais tempo para ser executado. Não se preocupe se não vir todos os níveis quando atualizar o nível de registro para uma categoria. Somente os níveis que adicionam mais registros para a categoria são listados.

Felizmente, depois que você desativa o registro para os avisos do robô, fica fácil identificar o problema com o motor 3: o nível do líquido de arrefecimento está baixo. Você envia um engenheiro para adicionar mais líquido de arrefecimento. E aproveitando a oportunidade, você pede ao engenheiro para lubrificar as juntas do robô. Você espera que assim o robô fique um pouco mais feliz.

Continue a aprender de graça!
Inscreva-se em uma conta para continuar.
O que você ganha com isso?
  • Receba recomendações personalizadas para suas metas de carreira
  • Pratique suas habilidades com desafios práticos e testes
  • Monitore e compartilhe seu progresso com os empregadores
  • Conecte-se a orientação e oportunidades de carreira