Découvrir les journaux des traces .NET/.NET Core et Python dans Application Insights

Envoyez des journaux de suivi de diagnostic pour votre application ASP.NET/ASP.NET Core à partir de ILogger, NLog, log4Net ou System.Diagnostics.Trace vers Azure Application Insights. Pour les applications Python, envoyez des journaux de traçage de diagnostics à l’aide d’AzureLogHandler dans OpenCensus Python pour Azure Monitor. Vous pourrez ensuite les explorer et les rechercher. Ces journaux sont fusionnés avec les autres fichiers journaux de votre application. Vous pouvez les utiliser pour identifier les traces associées à chaque demande utilisateur et pour les mettre en corrélation avec d’autres événements et rapports d’exception.

Notes

Avez-vous besoin du module de collecte de journaux ? Il s’agit d’un adaptateur très utile pour les enregistreurs d’événements tiers. Cependant, si vous n’utilisez pas déjà NLog, log4Net ou System.Diagnostics.Trace, vous pouvez appeler Application Insights TrackTrace() directement.

Notes

Le support de l’ingestion de clé d’instrumentation prendra fin le 31 mars 2025. L’ingestion de clé d’instrumentation continuera de fonctionner, mais nous ne fournirons plus de mises à jour ni de support pour la fonctionnalité. Passez aux chaînes de connexion pour tirer parti des nouvelles fonctionnalités.

Installation de la journalisation sur votre application

Installez le framework de journalisation de votre choix dans votre projet, ce qui générera une entrée dans 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>

Configuration d’Application Insights pour la collecte des journaux d’activité

Ajoutez Application Insights à votre projet si vous ne l’avez pas déjà fait et qu’il existe une option permettant d’inclure le collecteur de journaux.

Vous pouvez également cliquer avec le bouton droit sur votre projet dans l’Explorateur de solutions pour configurer Application Insights. Sélectionnez l’option Configure trace collection (Configurer la collecte des traces).

Notes

Menu Application Insights non disponible ou aucune option pour le collecteur de journaux ? Consultez la Résolution des problèmes.

Installation manuelle

Utilisez cette méthode si votre type de projet n’est pas pris en charge par le programme d’installation Application Insights. Par exemple, s’il s’agit d’un projet de bureau Windows.

  1. Si vous prévoyez d'utiliser log4Net ou NLog, installez-le dans votre projet.

  2. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Gérer les packages NuGet.

  3. Recherchez Application Insights.

  4. Sélectionnez l’un des packages suivants :

Le package NuGet installe les assemblys nécessaires et modifie le fichier web.config ou app.config le cas échéant.

ILogger

Pour des exemples d’utilisation de l’implémentation Application Insights ILogger avec des applications de console et ASP.NET Core, consultez ApplicationInsightsLoggerProvider for .NET Core ILogger logs (ApplicationInsightsLoggerProvider pour les journaux d’activité .NET Core ILogger).

Insertion d'appels de journaux de diagnostic

Si vous utilisez System.Diagnostics.Trace, un appel standard serait :

System.Diagnostics.Trace.TraceWarning("Slow response - database01");

Si vous préférez log4net ou NLog, utilisez :

    logger.Warn("Slow response - database01");

Utiliser les événements EventSource

Vous pouvez configurer les événements System.Diagnostics.Tracing.EventSource à envoyer à Application Insights en tant que traces. D’abord, installez le package NuGet Microsoft.ApplicationInsights.EventSourceListener. Ensuite, modifiez la section TelemetryModules du fichier ApplicationInsights.config.

    <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
      <Sources>
        <Add Name="MyCompany" Level="Verbose" />
      </Sources>
    </Add>

Pour chaque source, vous pouvez définir les paramètres suivants :

  • Name spécifie le nom de l’événement EventSource à collecter.
  • Level spécifie le niveau de journalisation à collecter : Critical, Error, Informational, LogAlways, Verbose, ou Warning.
  • Keywords (facultatif) spécifie la valeur entière de combinaisons de mots clés à utiliser.

Utiliser les événements DiagnosticSource

Vous pouvez configurer les événements System.Diagnostics.Tracing.EventSource de façon à les envoyer à Application Insights en tant que traces. D’abord, installez le package NuGet Microsoft.ApplicationInsights.DiagnosticSourceListener. Ensuite, modifiez la section « TelemetryModules » du fichier ApplicationInsights.config.

    <Add Type="Microsoft.ApplicationInsights.DiagnosticSourceListener.DiagnosticSourceTelemetryModule, Microsoft.ApplicationInsights.DiagnosticSourceListener">
      <Sources>
        <Add Name="MyDiagnosticSourceName" />
      </Sources>
    </Add>

Pour chaque source de diagnostic à tracer, ajoutez une entrée avec l’attribut Name défini sur le nom de votre source de diagnostic.

Utiliser les événements ETW

Vous pouvez configurer les événements du suivi d’événements pour Windows (ETW, Event Tracing for Windows) à envoyer à Application Insights en tant que traces. D’abord, installez le package NuGet Microsoft.ApplicationInsights.EtwCollector. Ensuite, modifiez la section « TelemetryModules » du fichier ApplicationInsights.config.

Notes

Les événements ETW peuvent uniquement être collectés si le processus hébergeant le Kit de développement logiciel (SDK) s’exécute sous une identité membre des Utilisateurs ou Administrateurs du journal de performances.

    <Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.ApplicationInsights.EtwCollector">
      <Sources>
        <Add ProviderName="MyCompanyEventSourceName" Level="Verbose" />
      </Sources>
    </Add>

Pour chaque source, vous pouvez définir les paramètres suivants :

  • ProviderName est le nom du fournisseur ETW à collecter.
  • ProviderGuid spécifie le GUID du fournisseur ETW à collecter. Il peut être utilisé à la place de ProviderName.
  • Level définit le niveau de journalisation à collecter. Ce niveau peut être Critical, Error, Informational, LogAlways, Verbose ou Warning.
  • Keywords (facultatif) définit la valeur entière de combinaisons de mots clés à utiliser.

Utiliser directement l’API de suivi

Vous pouvez appeler directement l’API de suivi d’Application Insights. Les adaptateurs de journalisation utilisent cette API.

Par exemple :

TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow response - database01");

L’un des avantages de TrackTrace est que vous pouvez insérer des données relativement longues dans le message. Par exemple, vous pourriez y encoder des données POST.

Vous pouvez également ajouter un niveau de gravité à votre message. Comme pour les autres données de télémétrie, vous pouvez ajouter des valeurs de propriété qui permettent de filtrer ou rechercher différents jeux de traces. Par exemple :

TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow database response",
                            SeverityLevel.Warning,
                            new Dictionary<string, string> { { "database", "db.ID" } });

Maintenant, vous pouvez filtrer facilement dans Recherche de transaction tous les messages d’un niveau de gravité particulier se rapportant à une certaine base de données.

AzureLogHandler pour OpenCensus Python

Le gestionnaire de journaux Azure Monitor vous permet d’exporter des journaux Python vers Azure Monitor.

Instrumentez votre application avec le kit SDK OpenCensus Python pour Azure Monitor.

Cet exemple montre comment envoyer un journal relatif aux avertissements à 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!')

Exploration de vos journaux d’activité

Exécutez votre application en mode débogage, ou déployez-la en direct.

Dans le volet de la vue d’ensemble de votre application sur le portail Application Insights, sélectionnez Recherche de transaction.

Vous pouvez par exemple :

  • Filtrer selon les traces de journal ou les éléments avec des propriétés spécifiques
  • Inspecter un élément spécifique en détail
  • Rechercher d’autres données de journal système liées à la même demande utilisateur (ou ayant le même ID d’opération).
  • Enregistrer la configuration d’une page en tant que favori

Notes

Si votre application envoie des données en grand nombre et si vous utilisez le SDK Application Insights pour ASP.NET version 2.0.0-beta3 ou ultérieure, la fonctionnalité d’échantillonnage adaptatif peut fonctionner et transmettre uniquement une portion de vos données de télémétrie. En savoir plus sur l’échantillonnage.

Dépannage

Lisez les réponses aux questions fréquentes.

Quelles sont les causes des retards de télémétrie, d’un réseau surchargé et d’une transmission inefficace ?

System.Diagnostics.Tracing dispose d’une fonctionnalité de vidage automatique. Avec cette fonctionnalité, le SDK est vidé avec chaque élément de télémétrie, ce qui n’est pas souhaitable et peut entraîner des problèmes d’adaptateur de journalisation tels que la télémétrie retardée, la surcharge du réseau et une transmission inefficace.

Comment faire pour Java ?

Dans l’instrumentation sans code Java, qui est recommandée, les journaux sont collectés directement. Utilisez l’agent Java 3.0.

L’agent Java Application Insights collecte les journaux à partir de Log4j, Logback et java.util.logging dès son implémentation.

Pourquoi le menu contextuel du projet ne contient-il pas d’option Application Insights ?

  • Assurez-vous que Developer Analytics Tools est installé sur l’ordinateur de développement. Dans Visual Studio, accédez à Outils>Extensions et mises à jour, puis recherchez Developer Analytics Tools. S’il n’est pas dans l’onglet Installé, ouvrez l’onglet En ligne et installez-le.
  • Il peut s’agir d’un type de projet non pris en charge par Developer Analytics Tools. Utilisez l’installation manuelle.

Pourquoi l’outil de configuration ne contient-il pas d’option d’adaptateur de journalisation ?

  • Installez d’abord l’infrastructure de journalisation.
  • Si vous utilisez System.Diagnostics.Trace, assurez-vous de l’avoir configuré dans web.config.
  • Vérifiez que vous disposez de la dernière version d’Application Insights. Dans Visual Studio, accédez à Outils>Extensions et mises à jour, puis ouvrez l’onglet Mises à jour. Si l’option Developer Analytics Tools est présente, sélectionnez-la pour la mettre à jour.

Pourquoi est-ce que je reçois le message d’erreur « Instrumentation key cannot be empty » (La clé d’instrumentation ne peut pas être vide) ?

Vous avez probablement installé le package NuGet de l’adaptateur de journalisation sans installer Application Insights. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur ApplicationInsights.config, puis sélectionnez Mettre à jour Application Insights. Vous êtes invité à vous connecter à Azure et à créer une ressource Application Insights ou à réutiliser une ressource existante. Le problème devrait être résolu.

Le passage des événements et des demandes dans le pipeline peut prendre un certain temps.

Quelle est la quantité de données conservée ?

Plusieurs facteurs affectent la quantité de données conservées. Consultez la section Limites de la page sur les métriques d’événement client pour plus d’informations.

Pourquoi est-ce que je ne vois pas certaines entrées de journal que j’attendais ?

Peut-être que votre application envoie de grandes quantités de données et vous utilisez le SDK Application Insights pour ASP.NET version 2.0.0-beta3 ou ultérieure. Dans ce cas, la fonctionnalité d’échantillonnage adaptatif peut fonctionner et transmettre uniquement une portion de vos données de télémétrie. En savoir plus sur l’échantillonnage.

Étapes suivantes