Habilitar e configurar o Application Logging do Serviço de Aplicativo
Nessa unidade, veremos como o registro de aplicativos pode ajudar com seus aplicativos Web e mostramos como habilitar logs de aplicativos.
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, você pode querer ver uma mensagem registrada apenas quando ocorrer um nível específico 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 essa razão, o registro no sistema de arquivos é desabilitado automaticamente 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, mensagens de diferentes instâncias podem 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 direcionar mensagens para arquivos de log, os aplicativos Web do Azure usam o servidor Web Serviços de Informações da Internet (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 registro de aplicativos Web equivalente fornecido pelo IIS para aplicativos do Windows, pode ser necessário conectar-se ao seu contêiner usando 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. O Application Insights é projetado para implantações de aplicativos em produção e é uma ferramenta de desenvolvimento potencialmente útil. Funciona com uma variedade de ambientes de desenvolvimento de aplicativos, fornecendo o mesmo conjunto de dados de telemetria e desempenho ricos, seja o aplicativo 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 de suas implantações de aplicativos e dos dados coletados, você pode precisar 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 em produção e 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.
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.
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>