Habilitar e configurar o Application Logging do Serviço de Aplicativo

Concluído

Nesta unidade, veremos como o registro em log de aplicativos pode ajudar seus aplicativos Web e mostraremos a você como habilitar esses logs.

O que são logs de aplicativo?

O Azure fornece diagnósticos internos com log de aplicativo. Os logs de aplicativo são a saída das instruções de rastreamento de runtime no código do aplicativo. Por exemplo, talvez você queira verificar alguma logica em seu código adicionando um rastreamento para mostrar quando uma determinada função está sendo processada. Ou talvez você só queira ver uma mensagem registrada quando ocorrer um determinado nível de erro. O registro de aplicativos destina-se principalmente a aplicativos em pré-produção e a situações problemáticas, pois o excesso de registros pode afetar o desempenho e consumir rapidamente o armazenamento. Por esse motivo, o registro em log no sistema de arquivos é automaticamente desabilitado após 12 horas.

O log do aplicativo tem limitações de escala, principalmente porque os arquivos estão sendo usados para salvar a saída registrada em log. Se você tiver várias instâncias de um aplicativo e o mesmo armazenamento for compartilhado entre todas as instâncias, as mensagens de diferentes instâncias poderão ser intercaladas, dificultando a solução de problemas. Se cada instância tiver seu próprio arquivo de log, haverá vários logs, dificultando novamente a solução de problemas específicos da instância.

Os tipos de log disponíveis por meio do Serviço de Aplicativo do Azure dependem da estrutura do código do aplicativo e de o aplicativo estar em execução em um host de aplicativo do Windows ou do Linux.

ASP.NET

Os aplicativos ASP.NET são executados somente em serviços de aplicativos do Windows. Para registrar informações no log de diagnóstico do aplicativo, use a classe System.Diagnostics.Trace. Existem quatro níveis de rastreamento que podem ser utilizados, que se correlacionam com os níveis de registro em log error, warning, information e verbose mostrados no portal do Microsoft Azure:

  • Trace.TraceError("Message"); // Grava uma mensagem de erro
  • Trace.TraceWarning("Message"); // Grava uma mensagem de aviso
  • Trace.TraceInformation("Message"); // Grava uma mensagem de informação
  • Trace.WriteLine("Message"); // Grava uma mensagem detalhada

Aplicativos ASP.NET Core

Os aplicativos ASP.NET Core podem ser executados no Windows ou no Linux. Para registrar informações nos logs de aplicativo do Azure, use a classe alocador de agente e, em seguida, use um dos seis níveis de log:

  • logger.LogCritical("Message"); // Grava uma mensagem crítica no nível de log 5
  • logger.LogError("Message"); // Grava uma mensagem de erro no nível de log 4
  • logger.LogWarning("Message"); // Grava uma mensagem de aviso no nível de log 3
  • logger.LogInformation("Message"); // Grava uma mensagem de informação no nível de log 2
  • logger.LogDebug("Message"); // Grava uma mensagem de depuração no nível de log 1
  • logger.LogTrace("Message"); // Grava uma mensagem de rastreamento detalhado no nível de log 0

Para os aplicativos ASP.NET Core no Windows, essas mensagens se relacionam com os filtros no portal do Azure da seguinte maneira:

  • Os níveis 4 e 5 são mensagens de erro.
  • O nível 3 é uma mensagem de aviso.
  • O nível 2 é uma mensagem de informação.
  • Os níveis 0 e 1 são mensagens de detalhamento.

Para aplicativos ASP.NET Core no Linux, apenas as mensagens de erro (níveis 4 e 5) são registradas em log.

Aplicativos Node.js

Para os aplicativos Web baseados em script, como aplicativos Node.js no Windows ou no Linux, o log do aplicativo é habilitado com o método console():

  • console.error("Message"); // Grava uma mensagem no STDERR.
  • console.log("Message"); // Grava uma mensagem no STDOUT.

Ambos os tipos de mensagem são gravados nos logs de nível de erro do serviço de aplicativo do Azure.

Diferenças de registro em log entre hosts do Windows e do Linux

Para rotear mensagens para arquivos de log, os aplicativos Web do Azure usam o servidor Web (processo do IIS). Como os aplicativos Web baseados no Windows são um serviço do Azure bem estabelecido e o sistema de mensagens para aplicativos ASP.NET é totalmente integrado ao serviço subjacente do IIS, os aplicativos do Windows se beneficiam de uma infraestrutura de log avançada. Para outros aplicativos, as opções de registro em log são limitadas pela plataforma de desenvolvimento, mesmo quando executadas em um serviço de aplicativo do Windows.

A imagem do Docker usada para o contêiner do aplicativo determina a funcionalidade de registro em log disponível para aplicativos com script baseados em Linux, como o Node. O registro em log básico, como o uso de redirecionamentos para STDERR ou STDOUT, utiliza os logs do Docker. A funcionalidade mais avançada de registro em log depende da imagem subjacente e se ela está executando PHP, Perl, Ruby e assim por diante. Para baixar o log do aplicativo Web equivalente, conforme fornecido pelo IIS para aplicativos do Windows, pode ser necessária a conexão com o contêiner usando o SSH.

A tabela a seguir resumirá o suporte para o registro em log de ambientes comuns de aplicativo e hosts.

Ambiente de aplicativo Host Níveis de log Localização de salvamento
ASP.NET Windows Erro, Aviso, Informação, Detalhado Sistema de arquivos, Armazenamento de Blobs
ASP.NET Core Windows Erro, Aviso, Informação, Detalhado Sistema de arquivos, Armazenamento de Blobs
ASP.NET Core Linux Erro Sistema de arquivos
Node.js Windows Erro (stderr), Informação (StdOut), Aviso, Detalhado Sistema de arquivos, Armazenamento de Blobs
Node.js Linux Erro Sistema de arquivos
Java Linux Erro Sistema de arquivos

Alternativas para o diagnóstico de aplicativo

O Application Insights do Azure é uma extensão de site que fornece mais recursos de monitoramento de desempenho, como dados detalhados de uso e desempenho. Ele foi projetado para implantações de aplicativos de produção e é uma ferramenta de desenvolvimento potencialmente útil. O Application Insights funciona com uma variedade de ambientes de desenvolvimento de aplicativo, fornecendo o mesmo conjunto avançado de dados telemétricos e de desempenho, independentemente de o aplicativo ser ASP.NET ou Node. No entanto, para usar o Application Insights, você precisa incluir um código específico no aplicativo, usando o SDK do App Insights. O Application Insights também é um serviço faturável. Portanto, dependendo da escala das implantações de aplicativos e dos dados coletados, talvez seja necessário planejar custos regulares.

Você também pode exibir as Métricas do seu aplicativo, o que pode ajudar você a traçar um perfil de como seu aplicativo está operando. Esses contadores são úteis na produção e no desenvolvimento. Você pode exibir o uso da CPU, de memória, do sistema de arquivos e configurar alertas quando um contador atingir um limite específico. A cobrança para métricas é coberta pela camada do Plano do Serviço de Aplicativo.

Habilitar o log usando o portal do Azure

No portal, o log do aplicativo é gerenciado no painel Logs de diagnóstico do aplicativo Web.

Screenshot of Diagnostics logs pane in the Azure portal.

Para habilitar o log do aplicativo no sistema de arquivos do aplicativo Web defina Log do aplicativo (Sistema de Arquivos) como Ativado e defina o Nível como Erro, Aviso, Informação ou Detalhado. O registro em log no sistema de arquivos será automaticamente redefinido para Desligado após 12 horas.

Para ativar o registro em log de aplicativos em um contêiner de armazenamento de blobs, defina o Registro em log de Aplicativos (Blob) como Ativado e, em seguida, selecione uma conta de armazenamento e um contêiner. A conta de armazenamento e o aplicativo Web devem ser criados na mesma região do Azure. Em seguida, defina o Nível como Erro, Aviso, Informação ou Detalhado.

Observação

O salvamento no Armazenamento de Blobs não está disponível para os logs de aplicativo do Linux.

Ao fazer logon no Armazenamento de Blobs, você também precisa definir um Período de Retenção. Ao contrário dos logs do sistema de arquivos, os logs de blob nunca são excluídos por padrão. A opção de período de retenção significa que todos os logs mais antigos do que o número de dias especificado são excluídos.

Screenshot of configuring application logs in the Azure portal with Save highlighted.

Depois de configurar os logs, selecione Salvar.

Habilitar o log usando a CLI do Azure

Execute o comando abaixo para habilitar o registro em log do aplicativo no sistema de arquivos.

az webapp log config --application-logging filesystem --level verbose --name <app-name> --resource-group <resource-group-name>

Por exemplo, execute o comando abaixo para habilitar o registro em log no sistema de arquivos de um aplicativo chamado contosofashions123, capturando todas as mensagens.

az webapp log config --application-logging filesystem --level verbose --name contosofashions123 --resource-group contosofashionsRG

Atualmente, não existe uma maneira de desabilitar o registro em log de aplicativos utilizando os comandos da CLI do Azure. No entanto, o comando a seguir redefine o registro do sistema de arquivos somente para o nível de erro.

az webapp log config --application-logging off --name <app-name> --resource-group <resource-group-name>

Para exibir o status atual do log de um aplicativo, use este comando.

az webapp log show --name <app-name> --resource-group <resource-group-name>

Verificar seu conhecimento

1.

Quais tipos de aplicativos Web podem salvar logs no Armazenamento de Blobs do Azure?

2.

Por que o log do sistema de arquivos é desligado automaticamente após 12 horas?