Habilitar log de diagnósticos para aplicativos no Serviço de Aplicativo do Azure

Visão geral

O Azure fornece diagnósticos internos para auxiliar na depuração de um aplicativo de Serviço de Aplicativo. Neste artigo, você saberá como habilitar o registro em log de diagnóstico e adicionar instrumentação ao seu aplicativo, bem como acessar as informações registradas pelo Azure.

Este artigo usa o portal do Azure e a CLI do Azure para trabalhar com logs de diagnóstico. Para saber mais sobre como trabalhar com logs de diagnóstico usando o Visual Studio, confira Solucionando problemas do Azure no Visual Studio.

Observação

Além das instruções de registro em log neste artigo, há um novo recurso integrado de registro em log com o monitoramento do Azure. Você encontrará mais informações sobre esse recurso na seção Enviar logs para o Azure Monitor.

Digite Plataforma Location Descrição
Registro em log do aplicativo Windows, Linux Sistema de arquivos do serviço de aplicativo e/ou blobs de armazenamento do Azure Registra as mensagens geradas pelo código do aplicativo. As mensagens podem ser geradas pela estrutura da Web que você escolher ou diretamente do código do aplicativo usando o modelo de registro em log padrão do seu idioma. Cada mensagem recebe uma das seguintes categorias: crítico, erro, aviso, informações, depuraçãoe rastreamento. Você pode selecionar o quão detalhado deseja que o log seja definindo o nível de severidade ao habilitar o log do aplicativo.
Log do servidor Web Windows Sistema de arquivos do serviço de aplicativo e/ou Armazenamento de blobs do Azure Dados de solicitação HTTP brutos no formato de arquivo de log estendido W3C. Cada mensagem de log inclui dados como o método HTTP, o URI de recurso, o IP do cliente, a porta do cliente, o agente do usuário, o código de resposta e assim por diante.
Mensagens de erro detalhadas Windows Sistema de arquivos do serviço de aplicativo Cópias das páginas de erro .htm que seriam enviadas ao navegador do cliente. Por motivos de segurança, as páginas de erro detalhadas não devem ser enviadas aos clientes em produção, mas o serviço de aplicativo pode salvar a página de erro cada vez que um erro de aplicativo ocorre com código HTTP 400 ou superior. Pode conter informações que podem ajudar a determinar por que o servidor retornou o código de erro.
De uma solicitação de rastreio com falha Windows Sistema de arquivos do serviço de aplicativo Informações detalhadas de rastreamento sobre solicitações com falha, incluindo um rastreamento dos componentes IIS usados para processar a solicitação e o tempo gasto em cada componente. Isso é útil se você quiser melhorar o desempenho do site ou isolar um erro HTTP específico. Uma pasta é gerada para cada solicitação com falha, que contém o arquivo de log XML e a folha de estilos XSL usada para exibir o arquivo de log.
Log de implantação Windows, Linux Sistema de arquivos do serviço de aplicativo Registra quando você publica o conteúdo em um aplicativo. O log de implantação acontece automaticamente e não há definições de configuração para o log de implantação. Ele ajuda a determinar por que uma implantação falhou. Por exemplo, se você usar um script de implantação personalizado, poderá usar o log de implantação para determinar por que o script está falhando.

Observação

O serviço de aplicativo fornece uma ferramenta de diagnósticos dedicada e interativa para ajudá-lo a solucionar problemas de seu aplicativo. Para obter mais informações, confira Visão geral de diagnóstico do Serviço de Aplicativo do Azure.

Além disso, você pode usar outros serviços do Azure para aprimorar os recursos de log e monitoramento do seu aplicativo, como Azure monitor.

Habilitar o log de aplicativo (Windows)

Observação

O log de aplicativo para armazenamento de Blobs só pode usar contas de armazenamento na mesma região que o serviço de aplicativo

Para habilitar o log de aplicativos para aplicativos do Windows no portal do Azure, navegue até seu aplicativo e selecione logs do serviço de aplicativo.

Selecione ativado para o registro em log do aplicativo (Filesystem) ou log de aplicativo (BLOB) ou ambos.

A opção Filesystem é para fins de depuração temporária e fica desativada em 12 horas. A opção blob é para o log de longo prazo e precisa de um contêiner de armazenamento de blobs no qual os logs serão gravados. A opção Blob também inclui informações adicionais nas mensagens de log, como a ID da instância de VM de origem da mensagem de log ( ), ID de thread ( Tid ) e um carimbo de data/hora mais granular ( EventTickCount ).

Observação

No momento, somente logs de aplicativo do .NET podem ser gravados no Armazenamento de Blobs. Os logs de aplicativo Java, PHP, Node.js, Python só podem ser armazenados no sistema de arquivos do sistema de aplicativo (sem modificações no código para gravar logs no armazenamento externo).

Além disso, se você regenerar as chaves de acesso da sua conta de armazenamento, será necessário redefinir a respectiva configuração de registro em log para usar as chaves de acesso atualizadas. Para fazer isso:

  1. Na guia Configurar, defina o respectivo recurso de log como Desativado. Salve sua configuração.
  2. Habilite o registro no blob da conta de armazenamento novamente. Salve sua configuração.

Selecione o nívelou o nível de detalhes para o log. A tabela a seguir mostra as categorias de log incluídas em cada nível:

Nível Categorias incluídas
Desabilitado Nenhum
Erro Erro, Crítico
Aviso Aviso, Erro, Crítico
Informações Informações, Aviso, Erro, Crítico
Verbose Rastreamento, Depuração, Informações, Aviso, Erro, Crítico (todas as categorias)

Quando terminar, selecione Avançar.

Observação

Se você gravar logs em blobs, a política de retenção não se aplicará mais se você excluir o aplicativo, mas manter os logs nos blobs. Para saber mais, confira Custos que podem ser acumulados após a exclusão de recursos.

Habilitar o log de aplicativo (Linux/contêiner)

Para habilitar o log de aplicativos para aplicativos Linux ou contêineres personalizados no portal do Azure, navegue até seu aplicativo e selecione logs do serviço de aplicativo.

Em log do aplicativo, selecione sistema de arquivos.

Em cota (MB) , especifique a cota de disco para os logs do aplicativo. Em período de retenção (dias) , defina o número de dias que os logs devem ser retidos.

Quando terminar, selecione Avançar.

Habilitar o log de servidor web

Para habilitar o log do servidor Web do Windows no portal do Azure, navegue até seu aplicativo e selecione logs do serviço de aplicativo.

Para o log do servidor Web, selecione armazenamento para armazenar logs no armazenamento de blobs ou sistema de arquivos para armazenar logs no sistema de arquivos do serviço de aplicativo.

Em período de retenção (dias) , defina o número de dias que os logs devem ser retidos.

Observação

Se você regenerar as chaves de acesso de sua conta de armazenamento, será necessário redefinir a respectiva configuração de log para usar as chaves atualizadas. Para fazer isso:

  1. Na guia Configurar, defina o respectivo recurso de log como Desativado. Salve sua configuração.
  2. Habilite o registro no blob da conta de armazenamento novamente. Salve sua configuração.

Quando terminar, selecione Avançar.

Observação

Se você gravar logs em blobs, a política de retenção não se aplicará mais se você excluir o aplicativo, mas manter os logs nos blobs. Para saber mais, confira Custos que podem ser acumulados após a exclusão de recursos.

Erros detalhados de log

Para salvar a página de erro ou o rastreamento de solicitação com falha para aplicativos do Windows no portal do Azure, navegue até seu aplicativo e selecione logs do serviço de aplicativo.

Em log de erros detalhado ou rastreamento de solicitação com falha, selecione ativadoe, em seguida, selecione salvar.

Os dois tipos de logs são armazenados no sistema de arquivos do serviço de aplicativo. Até 50 erros (arquivos/pastas) são mantidos. Quando o número de arquivos HTML exceder 50, os arquivos de erro mais antigos são excluídos automaticamente.

O recurso rastreamento de solicitação com falha, por padrão, captura um log de solicitações que falharam com códigos de status HTTP entre 400 e 600. Para especificar regras personalizadas, você pode substituir a seção <traceFailedRequests> no arquivo <traceFailedRequests>.

Adicionar mensagens de log no código

No código do aplicativo, você usa os recursos de log usuais para enviar mensagens de log aos logs do aplicativo. Por exemplo:

Transmitir logs

Antes de transmitir os logs em tempo real, habilite o tipo de log desejado. Todas as informações gravadas em arquivos com terminação .txt, .log ou .htm que são armazenadas no diretório /LogFiles (d:/home/LogFiles) são transmitidas pelo console de aplicativo.

Observação

Alguns tipos de buffer de log gravam no arquivo de log, o que pode resultar em eventos com problemas na transmissão. Por exemplo, uma entrada para log de aplicativo, que ocorre quando um usuário visita uma página, pode ser exibida durante a transmissão antes da entrada de log HTTP correspondente para a solicitação da página.

No Portal do Azure

Para transmitir logs no portal do Azure, navegue até seu aplicativo e selecione fluxo de log.

Em Cloud Shell

Para transmitir logs ao vivo em Cloud Shell, use o seguinte comando:

Importante

Este comando pode não funcionar com aplicativos Web hospedados em um plano do serviço de aplicativo do Linux.

az webapp log tail --name appname --resource-group myResourceGroup

Para filtrar tipos específicos de log como HTTP, use o parâmetro --Provider. Por exemplo:

az webapp log tail --name appname --resource-group myResourceGroup --provider http

No terminal local

Para transmitir logs no console local, instale CLI do Azure e entre em sua conta. Depois de conectado, siga as instruções para Cloud Shell

Acessar arquivos de log

Se você configurar a opção de blobs de armazenamento do Azure para um tipo de log, precisará de uma ferramenta de cliente que funcione com o armazenamento do Azure. Para obter mais informações, consulte Ferramentas de cliente do armazenamento do Azure.

Para logs armazenados no sistema de arquivos do serviço de aplicativo, a maneira mais fácil é baixar o arquivo ZIP no navegador em:

  • Contêineres personalizados/Linux: https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
  • Aplicativos do Windows: https://<app-name>.scm.azurewebsites.net/api/dump

Para contêineres personalizados/Linux, o arquivo ZIP contém logs de saída do console para o host do docker e o contêiner do docker. Para um aplicativo expandido, o arquivo ZIP contém um conjunto de logs para cada instância. No sistema de arquivos do serviço de aplicativo, esses arquivos de log são o conteúdo do diretório /Home/LogFiles.

Para aplicativos do Windows, o arquivo ZIP contém o conteúdo do diretório D:\Home\LogFiles no sistema de arquivos do serviço de aplicativo. Ele contém a seguinte estrutura:

Tipo de log Diretório Descrição
Logs de aplicativo /LogFiles/Application/ Contém um ou mais arquivos de texto. O formato das mensagens de log depende do provedor de log que você usa.
Rastreamento de solicitações com falha /LogFiles/W3SVC#########/ Contém arquivos XML e um arquivo XSL. Você pode exibir os arquivos XML formatados no navegador.
Logs de erros detalhados /LogFiles/DetailedErrors/ Contém arquivos de erro HTM. Você pode exibir os arquivos HTM no navegador.
Outra maneira de exibir os rastreamentos de solicitação com falha é navegar até a página do aplicativo no Portal. No menu à esquerda, selecione diagnosticar e resolver problemas, em seguida, procure logs de rastreamento de solicitação com falha, clique no ícone para procurar e exibir o rastreamento desejado.
Logs do servidor Web /LogFiles/http/RawLogs/ Contém arquivos de texto formatados usando o formato de arquivo de log estendido do W3C. Essas informações podem ser lidas usando um editor de texto ou um utilitário como o Log Parser.
O serviço de aplicativo não dá suporte aos campos s-computername, s-ip ou cs-version .
Logs de implantação /LogFiles/git/ e /deployments/ Contém logs gerados pelos processos de implantação internos, bem como logs para implantações do Git.

Enviar logs ao Azure Monitor

Com a nova integração do Azure Monitor, você pode criar Configurações de Diagnóstico para enviar logs para Contas de Armazenamento, Hubs de eventos e Análise de logs.

Diagnostic Settings

Tipos de log com suporte

A tabela a seguir mostra os tipos de log e as descrições com suporte:

Tipo de log Windows Contêiner do Windows Linux Contêiner do Linux Descrição
AppServiceConsoleLogs Java SE & Tomcat Sim Sim Sim Saída padrão e erro padrão
AppServiceHTTPLogs Sim Sim Sim Sim Logs do Web Server
AppServiceEnvironmentPlatformLogs Sim N/D Sim Sim Ambiente do Serviço de Aplicativo: dimensionamento, alterações de configuração e logs de status
AppServiceAuditLogs Sim Sim Sim Sim Atividade de logon via FTP e Kudu
AppServiceFileAuditLogs Sim Sim TBA TBA Alterações de arquivo feitas no conteúdo do site; disponível somente para a camada Premium e acima
AppServiceAppLogs ASP.NET & Tomcat & ASP.NET & Tomcat & Imagens Protegidas Java SE & Imagens & Imagens Protegidas Java SE & Imagens & Logs de aplicativo
AppServiceIPSecAuditLogs Sim Sim Sim Sim Solicitações de regras de IP
AppServicePlatformLogs TBA Sim Sim Sim Logs de operação do contêiner
AppServiceAntivirusScanAuditLogs 3 Sim Sim Sim Yes Logs de varredura antivírus usando o Microsoft Defender para Nuvem; disponível somente na camada Premium

1 Para aplicativos Tomcat, adicione às configurações do aplicativo e defina-o como false ou 0. É preciso estar na versão mais recente do Tomcat e usar java.util.logging.

2 Para aplicativos Java SE, adicione às configurações do aplicativo e defina-o como true ou 1.

3 O tipo de log AppServiceAnti virusScanAuditLogs ainda está em versão prévia no momento

Próximas etapas