Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Entity Framework Core (EF Core) obsahuje několik mechanismů pro generování protokolů, reagování na události a získávání diagnostiky. Každá z těchto možností je přizpůsobená různým situacím a je důležité vybrat nejlepší mechanismus pro úkol, i když může fungovat více mechanismů. Například se k protokolování SQL dá použít databázový interceptor, ale je lepší to zpracovat jedním z mechanismů určených pro protokolování. Tato stránka obsahuje přehled jednotlivých mechanismů a popisuje, kdy se mají použít.
Stručná referenční dokumentace
Následující tabulka obsahuje stručný přehled rozdílů mezi zde popsanými mechanismy.
| Mechanismus | Async | Scope | Registrováno | Zamýšlené použití |
|---|---|---|---|---|
| Jednoduché protokolování | Ne | Podle kontextu | Konfigurace kontextu | Protokolování během vývoje |
| Microsoft.Extensions.Logging | Ne | Podle kontextu* | Konfigurace D.I. nebo kontextu | Protokolování v produkčním prostředí |
| Events | Ne | Podle kontextu | Kdykoliv | Reakce na události EF |
| Interceptors | Ano | Podle kontextu | Konfigurace kontextu | Manipulace s operacemi EF |
| Diagnostické posluchače | Ne | Zpracovat | Globálně | Diagnostika aplikací |
Microsoft.Extensions.Logging*Obvykle se konfiguruje pro jednotlivé aplikace prostřednictvím injektáže závislostí. Na úrovni EF je ale možné nakonfigurovat každý kontext s jiným protokolovacím nástrojem v případě potřeby.
Jednoduché protokolování
Protokoly EF Core lze zpřístupnit z jakéhokoli typu aplikace pomocí LogTo při konfiguraci instance DbContext. Tato konfigurace se obvykle provádí pomocí přepsání DbContext.OnConfiguring. Například:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.LogTo(Console.WriteLine);
Tento koncept se podobá Database.Log v EF6.
Další informace najdete v tématu Jednoduché protokolování .
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging je rozšiřitelný mechanismus protokolování s poskytovateli modulů plug-in pro mnoho běžných systémů protokolování. EF Core se plně integruje s Microsoft.Extensions.Logging a tato forma protokolování se ve výchozím nastavení používá pro aplikace ASP.NET Core.
Další informace najdete v tématu Použití microsoft.Extensions.Logging v EF Core .
Events
EF Core zveřejňuje události .NET, které fungují jako zpětná volání, když v kódu EF Core dojde k určitým událostem. Události jsou jednodušší než zachytávače a umožňují flexibilnější registraci. Jsou však pouze synchronní, a proto nemohou provádět neblokující asynchronní vstupně-výstupní operace.
Události se registrují na instanci DbContext a tuto registraci je možné provést kdykoli. Pomocí diagnostického posluchače získejte stejné informace, ale pro všechny instance DbContext v procesu.
Další informace najdete v tématu Události .NET v EF Core .
Zachytávání
Průsečíky EF Core umožňují zachytit, upravit a/nebo potlačení operací EF Core. To zahrnuje databázové operace nízké úrovně, jako je spuštění příkazu, a také operace vyšší úrovně, jako jsou volání SaveChanges.
Průsečíky se liší od protokolování a diagnostiky v tom, že umožňují úpravy nebo potlačení zachycené operace. Jednoduché protokolování nebo Microsoft.Extensions.Logging jsou lepší volbou pro protokolování.
Zachytávače jsou registrovány pro každou instanci DbContext při konfiguraci kontextu. Pomocí diagnostického posluchače získejte stejné informace, ale pro všechny instance DbContext v procesu.
Další informace najdete v tématu Interception .
Diagnostické posluchače
Diagnostické naslouchací objekty umožňují sledovat všechny události EF Core, které jsou zaznamenány v aktuálním procesu .NET.
Diagnostické naslouchací čtečky nejsou vhodné pro příjem událostí z jedné instance DbContext. Průsečíky EF Core poskytují přístup ke stejným událostem s registrací podle kontextu.
Diagnostické naslouchání nejsou určeny k protokolování. Jednoduché protokolování nebo Microsoft.Extensions.Logging jsou lepší volbou pro protokolování.
Podrobnosti najdete o použití diagnostických listenerů v EF Core.