Aracılığıyla paylaş


Günlük ve Durdurmaya Genel Bakış

Entity Framework Core (EF Core) günlükleri oluşturmak, olayları yanıtlamak ve tanılamaları almak için çeşitli mekanizmalar içerir. Bunların her biri farklı durumlara uyarlanmıştır ve elinizdeki görev için birden fazla mekanizma uygun olsa bile en uygun mekanizmayı seçmek önemlidir. Örneğin SQL'i günlüğe kaydetmek için bir veritabanı durdurucusu kullanılabilir ama bu görev günlüğe uyarlanmış mekanizmalardan biriyle daha iyi işlenir. Bu sayfada söz konusu mekanizmalardan her birine genel bakış bilgileri yer alır ve her birinin ne zaman kullanılacağı açıklanır.

Hızlı başvuru

Aşağıdaki tablo burada açıklanan mekanizmalar arasındaki farklar için hızlı bir başvuru sağlar.

Mekanizma Zaman Uyumsuz Scope Kayıtlı Kullanım amacı
Basit Günlüğe Kaydetme Hayır Bağlam başına Bağlam yapılandırması Geliştirme zamanı günlüğü
Microsoft.Extensions.Logging Hayır Bağlam başına* D.I. veya bağlam yapılandırması Üretim günlüğü
Etkinlikler Hayır Bağlam başına Herhangi bir zaman EF olaylarına tepki verme
Durdurucular Evet Bağlam başına Bağlam yapılandırması EF işlemlerini düzenleme
Tanılama dinleyicileri Hayır İşle Genel olarak Uygulama tanılamaları

*Genellikle Microsoft.Extensions.Logging bağımlılık ekleme yoluyla uygulama başına yapılandırılır. Öte yandan EF düzeyinde, gerekirse her bağlam farklı bir günlükçü ile yapılandırılabilir.

Basit günlüğe kaydetme

EF Core günlüklerine, DbContext örneği oluştururken her türden uygulamadan LogTo kullanılarak erişilebilir. Bu yapılandırma genellikle DbContext.OnConfiguring geçersiz kılma işlemiyle gerçekleştirilir. Örnek:

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

Bu kavram EF6'daki Database.Log işlemine benzer.

Daha fazla bilgi için bkz. Basit Günlüğe Kaydetme.

Microsoft.Extensions.Logging

Microsoft.Extensions.Logging, birçok yaygın günlük sistemi için eklenti sağlayıcılarıyla genişletilebilir bir günlük mekanizmasıdır. EF Core Microsoft.Extensions.Logging ile tam olarak tümleştirilir ve bu günlük biçimi ASP.NET Core uygulamalarında varsayılan olarak kullanılır.

Daha fazla bilgi için bkz. EF Core'da Microsoft.Extensions.Logging kullanma.

Etkinlikler

EF Core kodunda bazı şeyler olduğunda EF Core geri çağırma işlevini üstlenen .NET olaylarını kullanıma sunar. Olaylar, durduruculardan daha basittir ve daha esnek kayıt sağlar. Öte yandan bunlar yalnızca eşitlenir ve bu nedenle engelleyici olmayan zaman uyumsuz G/Ç gerçekleştiremez.

Olaylar DbContext örneği başına kaydedilir ve bu kayıt herhangi bir anda yapılabilir. İşlemdeki tüm DbContext örneklerine ilişkin olarak aynı bilgileri almak için tanılama dinleyicisi kullanın.

Daha fazla bilgi için bkz. EF Core'da .NET Olayları.

Durdurma

EF Core durdurucuları EF Core işlemlerinin durdurulmasına, değiştirilmesine ve/veya engellenmesine olanak tanır. Bu, komut yürütme gibi düşük düzeyli veritabanı işlemlerinin yanı sıra SaveChanges çağrıları gibi üst düzey işlemleri de içerir.

Durdurucuların günlük ve tanılamalardan farkı, durdurulan işlemin değiştirilmesine veya engellenmesine olanak tanımalarıdır. Basit günlüğe kaydetme veya Microsoft.Extensions.Logging, günlük için daha iyi seçeneklerdir.

Durdurucular, bağlam yapılandırıldığında DbContext örneği başına kaydedilir. İşlemdeki tüm DbContext örneklerine ilişkin olarak aynı bilgileri almak için tanılama dinleyicisi kullanın.

Daha fazla bilgi için bkz. Durdurma.

Tanılama dinleyicileri

Tanılama dinleyicileri geçerli .NET işleminde gerçekleşen tüm EF Core olayları için dinleme sağlar.

Tanılama dinleyicileri tek bir DbContext örneğinden olayları almaya uygun değildir. EF Core durdurucuları bağlam başına kayıt yoluyla aynı olaylara erişim sağlar.

Tanılama dinleyicileri günlüğe kaydetme için tasarlanmamıştır. Basit günlüğe kaydetme veya Microsoft.Extensions.Logging, günlük için daha iyi seçeneklerdir.

Daha fazla bilgi için bkz. EF Core’da tanılama dinleyicilerini kullanma.