Explore os logs de rastreamento do .NET/.NET Core e Python no Application Insights
Envie logs de rastreamento de diagnóstico para seu aplicativo ASP.NET/ASP.NET Core de ILogger, NLog, log4Net ou System.Diagnostics.Trace para o Azure Application Insights. Para aplicativos Python, envie logs de rastreamento de diagnóstico usando AzureLogHandler no OpenCensus Python for Azure Monitor. Você pode então explorá-los e procurá-los. Esses logs são mesclados com os outros arquivos de log do seu aplicativo. Você pode usá-los para identificar rastreamentos associados a cada solicitação de usuário e correlacioná-los com outros eventos e relatórios de exceções.
Nota
Você precisa do módulo de captura de log? É um adaptador útil para registradores de terceiros. Mas se você ainda não estiver usando NLog, log4Net ou System.Diagnostics.Trace, considere chamar o Application Insights TrackTrace() diretamente.
Nota
A 31 de março de 2025, o suporte da ingestão de chaves de instrumentação terminará. A ingestão de chaves de instrumentação continuará a funcionar, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar os novos recursos.
Instalar o registo na sua aplicação
Instale a estrutura de log escolhida em seu projeto, o que deve resultar em uma entrada em app.config ou web.config.
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add name="myAppInsightsListener" type="Microsoft.ApplicationInsights.TraceListener.ApplicationInsightsTraceListener, Microsoft.ApplicationInsights.TraceListener" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Configurar o Application Insights para coletar logs
Adicione o Application Insights ao seu projeto se você ainda não tiver feito isso e houver uma opção para incluir o coletor de log.
Ou clique com o botão direito do mouse em seu projeto no Gerenciador de Soluções para Configurar o Application Insights. Selecione a opção Configurar coleta de rastreamento.
Nota
Não há menu do Application Insights ou opção de coletor de log? Experimente a resolução de problemas.
Instalação manual
Use esse método se o tipo de projeto não for suportado pelo instalador do Application Insights. Por exemplo, se for um projeto de área de trabalho do Windows.
Se você planeja usar log4net ou NLog, instale-o em seu projeto.
No Gerenciador de Soluções, clique com o botão direito do mouse em seu projeto e selecione Gerenciar Pacotes NuGet.
Pesquise por Application Insights.
Selecione um dos seguintes pacotes:
- ILogger: Microsoft.Extensions.Logging.ApplicationInsights
- NLog: Microsoft.ApplicationInsights.NLogTarget
- log4net: Microsoft.ApplicationInsights.Log4NetAppender
- System.Diagnostics: Microsoft.ApplicationInsights.TraceListener
- Microsoft.ApplicationInsights.DiagnosticSourceListener
- Microsoft.ApplicationInsights.EtwCollector
- Microsoft.ApplicationInsights.EventSourceListener
O pacote NuGet instala os assemblies necessários e modifica web.config ou app.config, se aplicável.
ILogger
Para obter exemplos de como usar a implementação do Application Insights ILogger com aplicativos de console e ASP.NET Core, consulte ApplicationInsightsLoggerProvider for .NET Core ILogger logs.
Inserir chamadas de log de diagnóstico
Se você usar System.Diagnostics.Trace, uma chamada típica seria:
System.Diagnostics.Trace.TraceWarning("Slow response - database01");
Se preferir log4net ou NLog, use:
logger.Warn("Slow response - database01");
Usar eventos EventSource
Você pode configurar eventos System.Diagnostics.Tracing.EventSource para serem enviados ao Application Insights como rastreamentos. Primeiro, instale o Microsoft.ApplicationInsights.EventSourceListener
pacote NuGet. Em seguida, edite a TelemetryModules
seção do arquivo ApplicationInsights.config .
<Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
<Sources>
<Add Name="MyCompany" Level="Verbose" />
</Sources>
</Add>
Para cada fonte, você pode definir os seguintes parâmetros:
- Name especifica o nome do EventSource a ser coletado.
- Level especifica o nível de log a ser coletado: Crítico, Erro, Informativo, LogAlways, Detalhado ou Aviso.
- Palavras-chave (opcional) especificam o valor inteiro das combinações de palavras-chave a serem usadas.
Usar eventos DiagnosticSource
Você pode configurar eventos System.Diagnostics.DiagnosticSource para serem enviados ao Application Insights como rastreamentos. Primeiro, instale o Microsoft.ApplicationInsights.DiagnosticSourceListener
pacote NuGet. Em seguida, edite a seção "TelemetryModules" do arquivo ApplicationInsights.config .
<Add Type="Microsoft.ApplicationInsights.DiagnosticSourceListener.DiagnosticSourceTelemetryModule, Microsoft.ApplicationInsights.DiagnosticSourceListener">
<Sources>
<Add Name="MyDiagnosticSourceName" />
</Sources>
</Add>
Para cada fonte de diagnóstico que você deseja rastrear, adicione uma entrada com o Name
atributo definido para o nome da sua fonte de diagnóstico.
Usar eventos ETW
Você pode configurar eventos de Rastreamento de Eventos para Windows (ETW) a serem enviados ao Application Insights como rastreamentos. Primeiro, instale o Microsoft.ApplicationInsights.EtwCollector
pacote NuGet. Em seguida, edite a seção "TelemetryModules" do arquivo ApplicationInsights.config .
Nota
Os eventos ETW só podem ser coletados se o processo que hospeda o SDK for executado sob uma identidade que seja membro de Usuários ou Administradores do Log de Desempenho.
<Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.ApplicationInsights.EtwCollector">
<Sources>
<Add ProviderName="MyCompanyEventSourceName" Level="Verbose" />
</Sources>
</Add>
Para cada fonte, você pode definir os seguintes parâmetros:
- ProviderName é o nome do provedor ETW a ser coletado.
- ProviderGuid especifica o GUID do provedor ETW a ser coletado. Pode ser usado em vez de
ProviderName
. - Level define o nível de log a ser coletado. Pode ser Crítico, Erro, Informativo, LogAlways, Detalhado ou Aviso.
- Palavras-chave (opcional) definem o valor inteiro das combinações de palavras-chave a serem usadas.
Use a API de rastreamento diretamente
Você pode chamar a API de rastreamento do Application Insights diretamente. Os adaptadores de log usam essa API.
Por exemplo:
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow response - database01");
Uma vantagem é TrackTrace
que você pode colocar dados relativamente longos na mensagem. Por exemplo, você pode codificar dados POST lá.
Você também pode adicionar um nível de gravidade à sua mensagem. E, como outras telemetrias, você pode adicionar valores de propriedade para ajudar a filtrar ou pesquisar diferentes conjuntos de rastreamentos. Por exemplo:
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow database response",
SeverityLevel.Warning,
new Dictionary<string, string> { { "database", "db.ID" } });
Agora você pode filtrar facilmente na Pesquisa de transações todas as mensagens de um determinado nível de gravidade relacionadas a um determinado banco de dados.
AzureLogHandler para OpenCensus Python
O Manipulador de Log do Azure Monitor permite exportar logs Python para o Azure Monitor.
Instrumente seu aplicativo com o OpenCensus Python SDK for Azure Monitor.
Este exemplo mostra como enviar um log de nível de aviso para o Azure Monitor.
import logging
from opencensus.ext.azure.log_exporter import AzureLogHandler
logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(connection_string='InstrumentationKey=<your-instrumentation_key-here>'))
logger.warning('Hello, World!')
Explore os seus registos
Execute seu aplicativo no modo de depuração ou implante-o ao vivo.
No painel de visão geral do seu aplicativo no portal do Application Insights, selecione Pesquisa de transações.
Pode, por exemplo:
- Filtre em rastreamentos de log ou em itens com propriedades específicas.
- Inspecione um item específico em detalhes.
- Encontre outros dados de log do sistema relacionados à mesma solicitação do usuário (tem o mesmo ID de operação).
- Salve a configuração de uma página como favorita.
Nota
Se seu aplicativo envia muitos dados e você está usando o SDK do Application Insights para ASP.NET versão 2.0.0-beta3 ou posterior, o recurso de amostragem adaptável pode operar e enviar apenas uma parte da sua telemetria. Saiba mais sobre amostragem.
Resolução de Problemas
Encontre respostas a perguntas comuns.
O que causa telemetria atrasada, rede sobrecarregada e transmissão ineficiente?
System.Diagnostics.Tracing tem um recurso Autoflush. Esse recurso faz com que o SDK seja liberado com todos os itens de telemetria, o que é indesejável, e pode causar problemas no adaptador de log, como telemetria atrasada, uma rede sobrecarregada e transmissão ineficiente.
Como faço isso para Java?
Na instrumentação sem código Java, que é recomendada, os logs são coletados imediatamente. Use o agente Java 3.0.
O agente Java do Application Insights coleta logs do Log4j, Logback e java.util.logging prontos para uso.
Por que não há nenhuma opção do Application Insights no menu de contexto do projeto?
- Certifique-se de que o Developer Analytics Tools esteja instalado na máquina de desenvolvimento. No Visual Studio, vá para Ferramentas>Extensões e Atualizações e procure Ferramentas do Developer Analytics. Se não estiver na guia Instalado , abra a guia Online e instale-a.
- Esse tipo de projeto pode ser um que o Developer Analytics Tools não suporta. Use a instalação manual.
Por que não há nenhuma opção de adaptador de log na ferramenta de configuração?
- Instale a estrutura de log primeiro.
- Se estiver a utilizar System.Diagnostics.Trace, certifique-se de que o configurou em web.config.
- Certifique-se de que tem a versão mais recente do Application Insights. No Visual Studio, vá para Ferramentas>Extensões e Atualizações e abra a guia Atualizações. Se o Developer Analytics Tools estiver lá, selecione-o para atualizá-lo.
Por que recebo a mensagem de erro "A chave de instrumentação não pode estar vazia"?
Você provavelmente instalou o pacote NuGet do adaptador de registro em log sem instalar o Application Insights. No Gerenciador de Soluções, clique com o botão direito do mouse em ApplicationInsights.config e selecione Atualizar Application Insights. Você será solicitado a entrar no Azure e criar um recurso do Application Insights ou reutilizar um existente. Deve corrigir o problema.
Por que posso ver rastreamentos, mas não outros eventos, na pesquisa de diagnóstico?
Pode demorar um pouco para que todos os eventos e solicitações passem pelo pipeline.
Quantos dados são retidos?
Vários fatores afetam a quantidade de dados retidos. Para obter mais informações, consulte a seção Limites da página de métricas de eventos do cliente.
Por que não vejo algumas entradas de log que eu esperava?
Talvez seu aplicativo envie grandes quantidades de dados e você esteja usando o SDK do Application Insights para ASP.NET versão 2.0.0-beta3 ou posterior. Nesse caso, o recurso de amostragem adaptável pode operar e enviar apenas uma parte da sua telemetria. Saiba mais sobre amostragem.