web-dev-qa-db-fra.com

Désactiver les informations sur les applications dans le débogage

Comment puis-je désactiver automatiquement les informations sur les applications lors de l'utilisation d'une configuration de débogage et l'activer uniquement lors de la publication?
Est-il possible de faire cela sans créer une autre clé d'instrumentation uniquement pour le débogage?

J'ai trackevent instructions éparpillées dans tout le code, les enfermer dans une vérification de préprocesseur de débogage n'est pas une solution idéale.

Ma solution actuelle consiste à définir le Build Action du fichier ApplicationInsights.config sur None pour qu'il ne soit pas copié dans le répertoire de sortie du projet, mais ce processus ne peut pas être automatisé. la configuration de construction active.

Il existe un mode développeur mais doit être modifié manuellement (s'il était possible de définir le fichier de configuration de manière conditionnelle, le problème résolu par instrumentationkey était également résolu). Voir http://apmtips.com/blog/2015/02/02/developer-mode/

Référence: http://blogs.msdn.com/b/visualstudioalm/archive/2015/01/07/application-insights-support-for-multiple-environments-stamps-and-app-versions.aspx

87
Alberto Rivelli

Comme expliqué dans la question, ne déployez pas et ne déployez pas un ApplicationInsights.config sans que <instrumentationkey>key</instrumentationkey> ne bloque la génération d'événements. Vous pouvez ensuite mettre la clé d'instrumentation dans le code (uniquement lors de la validation dans mon cas)

#if !DEBUG
    Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = "instrumentation key";
#endif

Chaque TelemetryClient créée après cet appel aura la bonne clé et suivra les événements afin que vous n'ayez pas à changer le code dans tous les endroits. Ne pas appeler la méthode ci-dessus ou laisser le paramètre vide bloquera les événements car aucune clé n'est configurée.

Fondamentalement, le fichier ApplicationInsights.config annule tout code définissant la clé d'instrumentation. En supprimant le <instrumentationkey>key</instrumentationkey>, vous pourrez utiliser le code pour configurer la clé. Si vous supprimez complètement le fichier, cela ne fonctionnera pas.

Voici la confirmation: "Si vous souhaitez définir la clé de manière dynamique, par exemple si vous souhaitez envoyer les résultats de votre application à différentes ressources, vous pouvez omettre la clé du fichier de configuration et la définir à la place dans le code."

Référence: https://Azure.Microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey

21
Alberto Rivelli

Vous pouvez essayer d'utiliser TelemetryConfiguration.DisableTelemetry Property Quelque chose comme ça ...

#if DEBUG
            TelemetryConfiguration.Active.DisableTelemetry = true;
#endif
64
Abhijit Jana

En plus des autres solutions, je suggérerais d'ajouter ce qui suit, disons au Global.asax:

protected void Application_Start()
{    
    DisableApplicationInsightsOnDebug();
    // do the other stuff
}

/// <summary>
/// Disables the application insights locally.
/// </summary>
[Conditional("DEBUG")]
private static void DisableApplicationInsightsOnDebug()
{
    TelemetryConfiguration.Active.DisableTelemetry = true;
}

L'avantage de ceci est qu'elle ne nécessite aucune modification de la configuration et fonctionne mieux avec des outils tels que ReSharper, qui la comprendront mieux que les directives #-.

58
Alexander Schmidt

Pour les projets ASP.NET Core, App Insights est activé par défaut, ce qui enregistre une tonne d'informations dans la fenêtre de débogage.

Pour le désactiver, allez dans "OUTILS -> Options -> Projets et solutions -> Projets Web" et cochez la case "Désactiver Application Insights local pour les projets Web Asp.Net Core".

Vous trouverez ci-dessous l'image permettant de désactiver les informations sur les applications locales.

Image

Pour plus d'informations sur le sujet, vous pouvez voir le numéro officiel de github ici

26
Siva Chamarthi

J'ai décidé d'utiliser les deux approches. J'ai déplacé le InstrumentationKey vers le Web.config et il sera remplacé par la transformation de Web.Release.config ou Web.Debug.config. (n'oubliez pas de le supprimer du fichier ApplicationInsights.config]). Ensuite, j'ai appelé cette méthode à partir de la Application_Start()

public static void RegisterTelemetryInstrumentationKey()
{
    if (string.IsNullOrWhiteSpace(WebConfigurationManager.AppSettings["TelemetryInstrumentationKey"])
    {
        TelemetryConfiguration.Active.DisableTelemetry = true;
    }
    else
    {
        TelemetryConfiguration.Active.InstrumentationKey = AppSettings.TelemetryInstrumentationKey;
    }
}
12
Sergey

L'exécution d'une application Web ASP.NET Core 2.1 avec Visual Studio 2017 (15.9.2) n'entraînait pas d'effacement du résultat dans la fenêtre Débogage.

Cependant, le travail a été ajouté à Configure () dans Startup.cs;

if (_env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    TelemetryConfiguration.Active.DisableTelemetry = true;
    TelemetryDebugWriter.IsTracingDisabled = true;
}

Notez que IsTracingDisabled était la solution clé, mais je suis parti dans DisableTelemetry pour faire bonne mesure! De plus, il est utile de disposer les deux lignes côte à côte lorsque vous recherchez des références similaires entre des projets .NET Framework et .NET Core dans la même solution.

11
alv

Je viens d'avoir le même problème.

Nous voulions contrôler les paramètres dans le fichier web.config. Nous avons donc ajouté une clé DisableAITelemetry dans les paramètres de notre application:

  <appSettings>
    <add key="DisableAITelemetry" value="true" />
  </appSettings>

Avec les versions live et démo, nous n'inclurons pas de valeur (par défaut, elle est false).

Nous pourrions alors le résoudre en ajoutant ceci:

bool disable;
string disableAiTelemetry = ConfigurationManager.AppSettings["DisableAITelemetry"];
bool.TryParse(disableAiTelemetry, out disable);
TelemetryConfiguration.Active.DisableTelemetry = disable;
10
chris31389

Dans une application ASP.NET Core, vous pouvez ajouter ce qui suit au fichier Startus.cs pour désactiver Application Insights dans l'environnement de développement:

if (env.IsDevelopment()) {
    TelemetryConfiguration.Active.DisableTelemetry = true;
}

Ajoutez ceci au constructeur, juste après la commande builder.AddApplicationInsightsSettings(); et vous ne verrez plus les journaux AI obstruer votre console de débogage.

9
saluce

Jeu légèrement différent sur certaines des autres solutions. Mettez ceci dans votre global.asax:

Microsoft.ApplicationInsights.Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = Debugger.IsAttached;

Il désactivera la sortie de débogage Insights de l'application lorsqu'il s'exécutera sous le débogueur, mais l'autorisera sous les scénarios Ctrl + F5 et les versions de débogage publiées pour tester les serveurs.

7
Josh

Nous avons trouvé le moyen le plus simple d'empêcher le traçage dans le journal de débogage est simple:

Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = True
5
Peter Jarrett

Microsoft.ApplicationInsights.AspNetCore version 2.1

services.AddApplicationInsightsTelemetry(options =>
{
    options.EnableDebugLogger = false;
});
3
JJS
         public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            #region Disable Application Insights debug informations
#if DEBUG
            TelemetryConfiguration.Active.DisableTelemetry = true;
            TelemetryDebugWriter.IsTracingDisabled = true;
#endif
            #endregion
//...
}
1
SZL