Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Entity Framework Core (EF Core) contient plusieurs mécanismes pour générer des journaux, répondre aux événements et obtenir des diagnostics. Chacun d’eux est adapté à différentes situations, et il est important de sélectionner le meilleur mécanisme pour la tâche en main, même lorsque plusieurs mécanismes peuvent fonctionner. Par exemple, un intercepteur de base de données peut être utilisé pour journaliser SQL, mais cela est mieux géré par l’un des mécanismes adaptés à la journalisation. Cette page présente une vue d’ensemble de chacun de ces mécanismes et décrit quand chacun doit être utilisé.
Référence rapide
Le tableau ci-dessous fournit une référence rapide pour connaître les différences entre les mécanismes décrits ici.
| Mécanisme | Asynchrone | Étendue | Enregistré | Usage prévu |
|---|---|---|---|---|
| Système de logs simple | Non | Par contexte | Configuration du contexte | Journalisation en temps de développement |
| Microsoft.Extensions.Logging | Non | Par contexte* | Configuration de D.I. ou de contexte | Journalisation de production |
| Événements | Non | Par contexte | À tout moment | Réaction aux événements EF |
| Interceptors | Oui | Par contexte | Configuration du contexte | Manipulation d’opérations EF |
| Écouteurs de diagnostic | Non | Processus | Globalement | Diagnostic d'application |
En règle générale, la configuration de Microsoft.Extensions.Logging se fait par application via l’injection de dépendances. Toutefois, au niveau EF, chaque contexte peut être configuré avec un autre enregistreur d’événements si nécessaire.
Journalisation simple
Les journaux EF Core sont accessibles à partir de n’importe quel type d’application grâce à LogTo lors de la configuration d’une instance DbContext. Cette configuration est généralement effectuée dans un remplacement de DbContext.OnConfiguring. Par exemple:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.LogTo(Console.WriteLine);
Ce concept est similaire à Database.Log dans EF6.
Pour plus d’informations, consultez Journalisation simple .
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging est un mécanisme de journalisation extensible avec des fournisseurs de plug-ins pour de nombreux systèmes de journalisation courants. EF Core s’intègre entièrement avec Microsoft.Extensions.Logging, et cette forme de journalisation est utilisée par défaut pour les applications ASP.NET Core.
Pour plus d’informations , consultez Utilisation de Microsoft.Extensions.Logging dans EF Core .
Événements
EF Core expose les événements .NET pour agir en tant que rappels lorsque certaines choses se produisent dans le code EF Core. Les événements sont plus simples que les intercepteurs et permettent un enregistrement plus flexible. Toutefois, ils sont synchronisés uniquement et ne peuvent donc pas effectuer d’E/S asynchrones non bloquantes.
Les événements sont inscrits par instance DbContext et cette inscription peut être effectuée à tout moment. Utilisez un écouteur de diagnostic pour obtenir les mêmes informations, mais pour toutes les instances DbContext dans le processus.
Pour plus d’informations, consultez les événements .NET dans EF Core .
Interception
Les intercepteurs EF Core permettent l’interception, la modification et/ou la suppression des opérations EF Core. Cela inclut des opérations de base de données de bas niveau, telles que l’exécution d’une commande, ainsi que des opérations de niveau supérieur, telles que les appels à SaveChanges.
Les intercepteurs sont différents de la journalisation et des diagnostics, car ils autorisent la modification ou la suppression de l’opération interceptée. La journalisation simple ou Microsoft.Extensions.Logging est un meilleur choix pour la journalisation.
Les intercepteurs sont inscrits pour chaque instance de DbContext lorsque le contexte est paramétré. Utilisez un écouteur de diagnostic pour obtenir les mêmes informations, mais pour toutes les instances DbContext dans le processus.
Pour plus d’informations, consultez Interception .
Écouteurs de diagnostic
Les écouteurs de diagnostic permettent d’écouter tout événement EF Core qui se produit dans le processus .NET actuel.
Les écouteurs de diagnostic ne conviennent pas pour recevoir des événements à partir d’une seule instance DbContext. Les intercepteurs EF Core fournissent l’accès aux mêmes événements avec l’enregistrement par contexte.
Les écouteurs de diagnostic ne sont pas conçus pour la journalisation. La journalisation simple ou Microsoft.Extensions.Logging est un meilleur choix pour la journalisation.
Pour plus d’informations, consultez Utilisation d’écouteurs de diagnostic dans EF Core .