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.