Ativar o registo de diagnósticos para aplicações no Serviço de Aplicações do Azure
Nota
A partir de 1º de junho de 2024, todos os aplicativos do Serviço de Aplicativo recém-criados terão a opção de gerar um nome de host padrão exclusivo usando a convenção <app-name>-<random-hash>.<region>.azurewebsites.net
de nomenclatura. Os nomes de aplicativos existentes permanecerão inalterados.
Exemplo: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Para obter mais detalhes, consulte Nome de host padrão exclusivo para recurso do Serviço de Aplicativo.
Este vídeo mostra como ativar o registo de diagnósticos para aplicações.
As etapas no vídeo também são descritas nas seções a seguir.
Descrição geral
O Azure fornece diagnósticos internos para ajudar na depuração de um aplicativo do Serviço de Aplicativo. Neste artigo, você aprenderá como habilitar o log de diagnóstico e adicionar instrumentação ao seu aplicativo, bem como 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 obter informações sobre como trabalhar com logs de diagnóstico usando o Visual Studio, consulte Solucionando problemas do Azure no Visual Studio.
Nota
Além das instruções de log neste artigo, você também pode usar o recurso de log integrado do Azure Monitor. Você encontrará mais informações sobre esse recurso na seção Enviar logs para o Azure Monitor .
Type | Plataforma | Local de armazenamento de logs | Description |
---|---|---|---|
Registo de aplicação | Windows, Linux | Sistema de arquivos do Serviço de Aplicativo e/ou blobs de Armazenamento do Azure | Registra mensagens geradas pelo código do aplicativo. As mensagens podem ser geradas pela estrutura da Web que você escolher, ou a partir do código do seu aplicativo diretamente usando o padrão de log padrão do seu idioma. A cada mensagem é atribuída uma das seguintes categorias: Crítica, Erro, Aviso, Informações, Depuração e Rastreamento. Você pode selecionar o quão detalhado você deseja que o log seja definindo o nível de gravidade ao habilitar o log do aplicativo. |
Registo de servidores Web | Windows | Sistema de arquivos do Serviço de Aplicativo ou blobs de Armazenamento do Azure | Dados brutos de solicitação HTTP no formato de arquivo de log estendido do W3C. Cada mensagem de log inclui dados como o método HTTP, URI de recurso, IP do cliente, porta do cliente, agente do usuário, 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 teriam sido enviadas para o navegador do cliente. Por motivos de segurança, 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 sempre que ocorrer um erro de aplicativo com código HTTP 400 ou superior. A página pode conter informações que podem ajudar a determinar por que o servidor retorna o código de erro. |
Falha no rastreio do pedido | Windows | Sistema de arquivos do Serviço de Aplicativo | Informações detalhadas de rastreamento sobre solicitações com falha, incluindo um rastreamento dos componentes do IIS usados para processar a solicitação e o tempo gasto em cada componente. Essas informações são úteis se você quiser melhorar o desempenho do site ou isolar um erro HTTP específico. Uma pasta é gerada para cada solicitação com falha. A pasta contém o arquivo de log XML e a folha de estilo XSL para exibir o arquivo de log. |
Log de implantação | Windows, Linux | Sistema de arquivos do Serviço de Aplicativo | Registra quando você publica conteúdo em um aplicativo. O log de implantação acontece automaticamente e não há configurações configuráveis 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. |
Quando armazenados no sistema de arquivos do Serviço de Aplicativo, os logs estão sujeitos ao armazenamento disponível para sua camada de preço (consulte Limites do Serviço de Aplicativo).
Nota
O Serviço de Aplicativo fornece uma ferramenta de diagnóstico dedicada e interativa para ajudá-lo a solucionar problemas do seu aplicativo. Para obter mais informações, consulte Visão geral do diagnóstico do Serviço de Aplicativo do Azure.
Além disso, você pode usar outros serviços do Azure para melhorar os recursos de registro em log e monitoramento do seu aplicativo, como o Azure Monitor.
Habilitar o log de aplicativos (Windows)
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 Log de aplicativos (sistema de arquivos) ou Log de aplicativos (Blob) ou ambos.
A opção Filesystem é para fins de depuração temporária e desliga-se em 12 horas. A opção Blob é para registro em log de longo prazo e precisa de um contêiner de armazenamento de blob para gravar logs. A opção Blob também inclui informações adicionais nas mensagens de log, como a ID da instância da VM de origem da mensagem de log (InstanceId
), ID do thread (Tid
) e um carimbo de data/hora mais granular (EventTickCount
).
Nota
Atualmente, apenas os logs de aplicativos .NET podem ser gravados no armazenamento de blobs. Os logs de aplicativos Java, PHP, Node.js e Python só podem ser armazenados no sistema de arquivos do Serviço de Aplicativo (sem modificações de código para gravar logs no armazenamento externo).
Além disso, se regenerar as chaves de acesso da sua conta de armazenamento, tem de repor a respetiva configuração de registo para utilizar as chaves de acesso atualizadas. Para tal:
- Na guia Configurar, defina o respetivo recurso de registro em log como Desativado. Salve sua configuração.
- Habilite o registro no blob da conta de armazenamento novamente. Salve sua configuração.
Selecione o Nível ou o nível de detalhes a ser registrado. A tabela a seguir mostra as categorias de log incluídas em cada nível:
Level | Categorias incluídas |
---|---|
Desativado | Nenhuma |
Erro | Erro, Crítico |
Aviso | Aviso, Erro, Crítico |
Informações | Informações, Aviso, Erro, Crítico |
Verbose | Trace, Debug, Info, Warning, Error, Critical (todas as categorias) |
Depois de terminar, selecione Guardar.
Nota
Se você gravar logs em blobs, a política de retenção não se aplicará mais se você excluir o aplicativo, mas mantiver os logs nos blobs. Para obter mais informações, consulte Custos que podem se acumular após a exclusão de recursos.
Habilitar o log de aplicativos (Linux/Container)
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 de aplicativos, 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 em que os logs devem ser mantidos.
Depois de terminar, selecione Guardar.
Habilitar o registro em log do servidor Web
Para habilitar o log do servidor Web para aplicativos do Windows no portal do Azure, navegue até seu aplicativo e selecione Logs do Serviço de Aplicativo.
Para registro em log do servidor Web, selecione Armazenamento para armazenar logs no armazenamento de blob 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 em que os logs devem ser mantidos.
Nota
Se regenerar as chaves de acesso da sua conta de armazenamento, tem de repor a respetiva configuração de registo para utilizar as chaves atualizadas. Para tal:
- Na guia Configurar, defina o respetivo recurso de registro em log como Desativado. Salve sua configuração.
- Habilite o registro no blob da conta de armazenamento novamente. Salve sua configuração.
Depois de terminar, selecione Guardar.
Nota
Se você gravar logs em blobs, a política de retenção não se aplicará mais se você excluir o aplicativo, mas mantiver os logs nos blobs. Para obter mais informações, consulte Custos que podem se acumular após a exclusão de recursos.
Registrar erros detalhados
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 Registo de Erros Detalhado ou Seguimento de Pedidos Falhados, selecione Ativado e, em seguida, selecione Guardar.
Ambos os tipos de logs são armazenados no sistema de arquivos do Serviço de Aplicativo. Até 50 erros (arquivos ou pastas) são mantidos. Quando o número de arquivos HTML excede 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 <traceFailedRequests>
seção no arquivo web.config .
Adicionar mensagens de log no código
No código do aplicativo, você usa os recursos de log usuais para enviar mensagens de log para os logs do aplicativo. Por exemplo:
ASP.NET aplicativos podem usar a classe System.Diagnostics.Trace para registrar informações no log de diagnóstico do aplicativo. Por exemplo:
System.Diagnostics.Trace.TraceError("If you're seeing this, something bad happened");
Por padrão, o ASP.NET Core usa o provedor de log Microsoft.Extensions.Logging.AzureAppServices . Para obter mais informações, consulte ASP.NET log principal no Azure. Para obter informações sobre o log do SDK de WebJobs, consulte Introdução ao SDK de WebJobs do Azure.
Os aplicativos Python podem usar o pacote OpenCensus para enviar logs para o log de diagnóstico do aplicativo.
Transmitir registos
Antes de transmitir logs em tempo real, habilite o tipo de log desejado. Todas as informações gravadas na saída do console ou nos arquivos que terminam em .txt, .log ou .htm armazenados no diretório /home/LogFiles (D:\home\LogFiles) são transmitidas pelo Serviço de Aplicativo.
Nota
Alguns tipos de buffer de log gravam no arquivo de log, o que pode resultar em eventos que aparecem na ordem incorreta no fluxo. Por exemplo, uma entrada de log de aplicativo que ocorre quando um usuário visita uma página pode ser exibida no fluxo antes da entrada de log HTTP correspondente para a solicitação de página.
No portal do Azure
Para transmitir logs no portal do Azure, navegue até seu aplicativo e selecione Fluxo de log.
No Cloud Shell
Para transmitir logs ao vivo no Cloud Shell, use o seguinte comando:
Importante
Este comando pode não funcionar com aplicativos Web hospedados em um plano de serviço de aplicativo Linux.
az webapp log tail --name appname --resource-group myResourceGroup
Para filtrar tipos de log específicos, 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 a CLI do Azure e entre na sua conta. Depois de iniciar sessão, siga as instruções para o Cloud Shell.
Aceder a ficheiros de registo
Se você configurar a opção de blobs do 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 de armazenamento do Azure.
Para logs armazenados no sistema de arquivos do Serviço de Aplicativo, a maneira mais fácil de acessar os arquivos é baixar o arquivo ZIP no navegador em:
- Linux/contêineres personalizados:
https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
- Aplicações Windows:
https://<app-name>.scm.azurewebsites.net/api/dump
Para Linux/contêineres personalizados, 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 escalonado, 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 . Os logs de implantação são armazenados em /site/deployments/.
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. Tem a seguinte estrutura:
Tipo de log | Diretório | Description |
---|---|---|
Logs de aplicativos | /LogFiles/Aplicativo/ | Contém um ou mais arquivos de texto. O formato das mensagens de log depende do provedor de log que você usa. |
Rastreamentos de solicitação com falha | /LogFiles/W3SVC#########/ | Contém arquivos XML e um arquivo XSL. Você pode visualizar os arquivos XML formatados no navegador. |
Logs de erros detalhados | /LogFiles/DetailedErrors/ | Contém arquivos de erro HTM. Você pode visualizar os arquivos HTM no navegador. Outra maneira de exibir os rastreamentos de solicitação com falha é navegar até a página do seu aplicativo no portal. No menu à esquerda, selecione Diagnosticar e resolver problemas, procure por Logs de rastreamento de solicitação com falha e 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. Você pode ler esses arquivos usando um editor de texto ou um utilitário como o Log Parser. O Serviço de Aplicativo não oferece suporte aos s-computername campos , s-ip ou cs-version . |
Logs de implantação | /LogFiles/Git/ e /deployments/ | Contém logs gerados pelos processos internos de implantação, bem como logs para implantações do Git. |
Enviar registos para o Azure Monitor
Com a 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 Log. Quando você adiciona uma configuração de diagnóstico, o Serviço de Aplicativo adiciona configurações de aplicativo ao seu aplicativo, o que dispara uma reinicialização do aplicativo.
Tipos de log suportados
Para obter uma lista dos tipos de log suportados e suas descrições, consulte Logs de recursos suportados para Microsoft.Web.
Considerações sobre a rede
Para restrições de Configurações de Diagnóstico, consulte a documentação oficial de Configurações de Diagnóstico sobre limites de destino.