Přehled protokolování a zachycení

Entity Framework Core (EF Core) obsahuje několik mechanismů pro generování protokolů, reagování na události a získání diagnostiky. Každá z nich je přizpůsobená různým situacím a je důležité vybrat nejlepší mechanismus pro daný úkol, a to i v případě, že může fungovat více mechanismů. k protokolování SQL můžete například použít zachytávací databáze, ale to je lepší, protože jeden z mechanismů přizpůsobených pro protokolování. Tato stránka obsahuje přehled každého z těchto mechanismů a popisuje, kdy by se měly použít jednotlivé postupy.

Stručná referenční příručka

V následující tabulce najdete stručný přehled rozdílů mezi mechanismy, které jsou zde popsané.

Mechanismus Async Obor Registrované Zamýšlené použití
Jednoduché protokolování No Na kontext Konfigurace kontextu Protokolování doby vývoje
Microsoft.Extensions.Logging No Za kontext * D.I. nebo konfigurace kontextu Protokolování výroby
událost No Na kontext Kdykoli Reakce na události EF
Zachycovače Yes Na kontext Konfigurace kontextu Manipulace s operacemi EF
Naslouchací procesy diagnostiky No Proces Univerzál Application Diagnostics

* Obvykle Microsoft.Extensions.Logging je nakonfigurované na každou aplikaci prostřednictvím injektáže závislosti na úrovni EF, v případě potřeby lze každý kontext nakonfigurovat pomocí jiného protokolovacího nástroje.

Jednoduché protokolování

Poznámka

Tato funkce byla představena v EF Core 5,0.

K protokolům EF Core se dá dostat z libovolného typu aplikace prostřednictvím použití LogTo při konfiguraci instance DbContext. Tato konfigurace se obvykle provádí v přepsání DbContext.OnConfiguring . Například:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    => optionsBuilder.LogTo(Console.WriteLine);

Tento koncept je podobný jako 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 řadu běžných protokolovacích systémů. EF Core plně integruje s Microsoft.Extensions.Logging a tato forma protokolování se ve výchozím nastavení používá pro ASP.NET Core aplikace.

Další informace najdete v tématu použití Microsoft. Extensions. Logging EF Core .

událost

Poznámka

Další události byly představeny v EF Core 5,0.

EF Core zveřejňuje události rozhraní .NET , aby fungovaly jako zpětná volání, když se v kódu EF Core vyskytují určité věci. Události jsou jednodušší než zachycení a umožňují pružnější registraci. Jsou však pouze synchronizovány, takže nemohou provádět neblokované asynchronní vstupně-výstupní operace.

Události jsou zaregistrované na instanci DbContext a tuto registraci je možné provést kdykoli. Pomocí diagnostického naslouchacího procesu můžete získat stejné informace, ale pro všechny instance DbContext v procesu.

Další informace najdete v tématu události .NET v EF Core .

Zachycení

Poznámka

Další zachycení byly představeny v EF Core 5,0.

Zachycení EF Core umožňují zachycení, úpravy a potlačení operací EF Core. To zahrnuje databázové operace nízké úrovně, jako je například spuštění příkazu, i operace vyšší úrovně, například volání metody SaveChanges.

Zachycení se liší od protokolování a diagnostiky v tom, že umožňují úpravy nebo potlačení operace, která je zachycena. Jednoduché protokolování nebo Microsoft. Extensions. Logging je lepší možnosti protokolování.

Zachycení jsou registrována na instanci DbContext při konfiguraci kontextu. Pomocí diagnostického naslouchacího procesu můžete získat stejné informace, ale pro všechny instance DbContext v procesu.

Další informace najdete v tématu zachycení .

Diagnostické naslouchací procesy

Diagnostické naslouchací procesy umožňují naslouchání jakékoli EF Core události, ke které dojde v aktuálním procesu .NET.

Diagnostické naslouchací procesy nejsou vhodné pro získání událostí z jedné instance DbContext. Zachycení EF Core poskytují přístup ke stejným událostem s registrací pro jednotlivé kontexty.

Diagnostické naslouchací procesy nejsou navrženy pro protokolování. Jednoduché protokolování nebo Microsoft. Extensions. Logging je lepší možnosti protokolování.

Další informace najdete v tématu použití diagnostických posluchačů v EF Core .