Como posso desabilitar os insights do aplicativo automaticamente ao usar uma configuração de depuração e habilitá-la apenas no lançamento?
É possível fazer isso sem criar outra chave de instrumentação apenas para depuração?
Eu tenho trackevent
instruções espalhadas por todo o código, colocá-las dentro de uma verificação de pré-processador de depuração não é uma solução ideal.
Minha solução atual é definir o Build Action
do ApplicationInsights.config
arquivo como de None
modo que não seja copiado para o diretório de saída do projeto, mas este não é um processo que pode ser automatizado com base na configuração de compilação ativa.
Existe um modo de desenvolvedor, mas precisa ser alterado manualmente (se fosse possível definir condicionalmente o arquivo de configuração, esvaziando também o problema resolvido da chave de instrumentação). Consulte http://apmtips.com/blog/2015/02/02/developer-mode/
fonte
WindowsAppInitializer.InitializeAsync();
(também tentei depois), mas o contador de eventos de insights do aplicativo visual studio aumentou. Não consegui ver se esta sessão foi efetivamente gravada no portal azure porque há muitas sessões e usuários. Vou tentar durante a noite.Como complemento às outras soluções, sugiro adicionar o seguinte, digamos
Global.asax
:A vantagem disso é que não é necessário alterar as configurações e funciona melhor com algumas ferramentas como ReSharper, que o compreenderá melhor do que
#
-directives.fonte
Conditional
atributo -atributo.Para projetos ASP.NET Core, o App Insights está ATIVADO por padrão, o que realmente registra uma tonelada de informações na janela de depuração.
Para desativá-lo, vá para "FERRAMENTAS -> Opções -> Projetos e Soluções -> Projetos da Web" e marque "Desativar Application Insights locais para projetos da web Asp.Net Core."
Abaixo está a imagem para desativar os insights de aplicativos locais.
Para obter mais informações sobre o problema, você pode ver o problema oficial do github aqui
fonte
Conforme explicado na pergunta, não implantar ou implantar um ApplicationInsights.config sem
<instrumentationkey>key</instrumentationkey>
bloquear a geração de eventos. Você pode então colocar a chave de instrumentação em código (apenas no lançamento no meu caso)Todos os
TelemetryClient
criados após esta chamada terão a chave correta e rastrearão eventos para que você não precise alterar o código em todos os lugares. Não chamar o método acima ou deixar o parâmetro vazio irá bloquear eventos porque não há uma chave configurada.Basicamente, o
ApplicationInsights.config
arquivo substitui qualquer código que defina a chave de instrumentação, removendo o<instrumentationkey>key</instrumentationkey>
interior dele, você poderá usar o código para configurar a chave. Se você remover o arquivo completamente, ele não funcionará.Aqui está a confirmação: "Se você deseja definir a chave dinamicamente - por exemplo, se deseja enviar resultados do seu aplicativo para diferentes recursos - você pode omitir a chave do arquivo de configuração e defini-la no código."
Referência: https://azure.microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey
fonte
ApplicationInsights.Debug/Release.config
Decidi usar as duas abordagens. Mudei o
InstrumentationKey
para oWeb.config
e ele será substituído pela transformação deWeb.Release.config
ouWeb.Debug.config
. (não se esqueça de removê-lo doApplicationInsights.config
arquivo). Então eu chamei este método doApplication_Start()
fonte
Executar um aplicativo da web ASP.NET Core 2.1 com Visual Studio 2017 (15.9.2) "Desativar Application Insights locais para projetos da web Asp.Net Core" não limpou a saída em minha janela de depuração.
No entanto, adicionar o seguinte a Configure () em Startup.cs funcionou;
Observe que IsTracingDisabled foi a solução principal , mas deixei em DisableTelemetry para uma boa medida! Além disso, ter as duas linhas próximas uma da outra é útil ao pesquisar referências semelhantes entre projetos .NET Framework e .NET Core na mesma solução.
fonte
Eu acabei de ter o mesmo problema.
Queríamos controlar a configuração no web.config, então adicionamos uma chave DisableAITelemetry nas configurações do aplicativo:
Com compilações ao vivo e demo, não incluiremos um valor (para que o padrão seja false).
Poderíamos então resolvê-lo adicionando:
fonte
Jogadas ligeiramente diferentes em algumas das outras soluções. Coloque isso em seu global.asax:
Ele desativará a saída de depuração do app insights ao executar no depurador, mas permitirá em cenários de Ctrl + F5 e compilações de depuração publicadas para testar servidores
fonte
Em um aplicativo ASP.NET Core, você pode adicionar o seguinte ao Startus.cs para desativar o Application Insights no ambiente de desenvolvimento:
Adicione isso ao construtor, logo após o
builder.AddApplicationInsightsSettings();
comando e você não verá mais logs de IA obstruindo seu console de depuração.fonte
Descobrimos que a maneira mais fácil de evitar que ele seja rastreado no log de depuração é tão simples quanto:
fonte
Microsoft.ApplicationInsights.AspNetCore Versão 2.1
fonte
Application Insights Telemetry (unconfigured)
mensagens do painel de depuração no Visual Studio - porque, se assim for, parece não funcionar :-(TelemetryDebugWriter.IsTracingDisabled = true;
removê-los.fonte
Desde o .NET Core 3.1:
fonte
A partir do ASP.NET Core 3.1:
(o acima pode ser chamado de qualquer lugar, mas quanto antes no ciclo de vida do seu aplicativo, melhor).
Ambos podem ser usados juntos para suprimir todas as atividades do Application Insights em seu código. Eu
#if DEBUG
protejo com uma diretiva para garantir que AppInsights não faça nada em minha máquina local, mas emita eventos quando carregado em nosso servidor de desenvolvimento do Azure:fonte