Günlüğe Kaydetmeye ve Kesmeye Genel Bakış
Entity Framework Core (EF Core), günlük oluşturma, olaylara yanıt verme ve tanılama elde etmek için çeşitli mekanizmalar içerir. Bunların her biri farklı durumlara uyarlanmış ve birden çok mekanizmanın çalışasa bile görev için en iyi mekanizmayı seçmek önemlidir. Örneğin, bir veritabanı kesme noktası günlük kaydı SQL, ancak günlüğe kaydetmeye uyarlanmış mekanizmalardan biri tarafından daha iyi ele alır. Bu sayfa, bu mekanizmaların her biri hakkında genel bir bakış sunar ve her biri ne zaman kullanılmalıdır?
Hızlı başvuru
Aşağıdaki tabloda, burada açıklanan mekanizmalar arasındaki farklar için hızlı bir başvuru verilmiştir.
| Mechanism | Zaman Uyumsuz | Kapsam | Kaydedildi | Hedeflenen kullanım |
|---|---|---|---|---|
| Basit Günlük Kaydı | No | Bağlam başına | Bağlam yapılandırması | Geliştirme zamanı günlüğü |
| Microsoft.Extensions.Logging | No | Bağlam başına* | D.I. veya bağlam yapılandırması | Üretim günlüğü |
| Ekinlikler | No | Bağlam başına | Her zaman | EF olaylarına tepki verme |
| Durdurucular | Yes | Bağlam başına | Bağlam yapılandırması | EF işlemlerinin manipülesi |
| Tanılama dinleyicileri | No | İşleme | Genel | Uygulama tanılama |
*Genellikle bağımlılık ekleme yoluyla uygulama başına yapılandırılır Ancak EF düzeyinde her bağlam gerekirse farklı bir Microsoft.Extensions.Logging günlükleyiciyle Microsoft.Extensions.Logging yalıtabilirsiniz.
Basit günlüğe kaydetme
Not
Bu özellik 5.0 EF Core tanıtıldı.
EF Core dbContext örneği yapılandırıldıkları zaman LogTo kullanımı aracılığıyla herhangi bir uygulama türünden günlüklere erişilebilir. Bu yapılandırma genellikle DbContext.OnConfiguring geçersiz kılınmasıyla yapılır. Örnek:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.LogTo(Console.WriteLine);
Bu kavram EF6'daki Database.Log ile benzerdir.
Daha fazla bilgi için bkz. Basit Günlük.
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging, birçok yaygın günlük sistemi için eklenti sağlayıcılarına sahip genişletilebilir bir günlük mekanizmasıdır. EF Core ile tam olarak Microsoft.Extensions.Logging tümleştirilmiştir ve bu günlük kaydı biçimi varsayılan olarak ASP.NET Core kullanılır.
Daha fazla bilgi için bkz. EF Core Microsoft.Extensions.Logging'ı kullanma.
Ekinlikler
Not
5.0'EF Core ek olaylar tanıtıldı.
EF Core kodda bazı şeyler olduğunda .NET olaylarını geri çağırma olarak EF Core. Olaylar, kesme noktasılardan daha basittir ve daha esnek kayıt sağlar. Ancak, bunlar yalnızca eşitlidir ve bu nedenle engelleyici olmayan zaman uyumsuz G/Ç gerçekleştiramaz.
Olaylar DbContext örneği başına kaydedilir ve bu kayıt herhangi bir zamanda yapılabilir. Süreçteki tüm DbContext örnekleri için aynı bilgileri almak için bir tanılama dinleyicisi kullanın.
Daha fazla bilgi için bkz. EF Core.NET Olayları.
Durdurma
Not
5.0'EF Core ek kesme noktası tanıtıldı.
EF Core kesme noktası, işlem durdurma, değiştirme ve/veya bu işlemlerin EF Core etkinleştirir. Buna bir komut yürütme gibi alt düzey veritabanı işlemlerinin yanı sıra SaveChanges çağrıları gibi daha üst düzey işlemler dahildir.
Kesme noktası, işlemde değişiklik veya engellemeye izin vermeleri için günlüğe kaydetme ve tanılamadan farklıdır. Basit günlük kaydı veya Microsoft.Extensions.Logging, günlüğe kaydetme için daha iyi seçeneklerdir.
Bağlam yapılandırıldığında kesme noktası DbContext örneği başına kaydedilir. Süreçteki tüm DbContext örnekleri için aynı bilgileri almak için bir tanılama dinleyicisi kullanın.
Daha fazla bilgi için bkz. Kesme.
Tanılama dinleyicileri
Tanılama dinleyicileri, geçerli .NET EF Core herhangi bir olay için dinlemeye olanak sağlar.
Tanılama dinleyicileri tek bir DbContext örneğinden olay almak için uygun değildir. EF Core kesme noktası, bağlam başına kayıt ile aynı olaylara erişim sağlar.
Tanılama dinleyicileri günlüğe kaydetme için tasarlanmaz. Basit günlük kaydı veya Microsoft.Extensions.Logging, günlüğe kaydetme için daha iyi seçeneklerdir.
Daha fazla bilgi için bkz. EF Core tanılama dinleyicilerini kullanma.