Bagikan melalui


Gambaran Umum Pengelogan serta Intersepsi

Entity Framework Core (EF Core) berisi beberapa mekanisme untuk menghasilkan log, merespons peristiwa, serta mendapatkan diagnostik. Setiap mekanisme disesuaikan dengan situasi yang berbeda, dan penting untuk memilih mekanisme terbaik untuk tugas yang ada, bahkan ketika beberapa mekanisme dapat berfungsi. Misalnya, interseptor database dapat digunakan untuk mencatat SQL, namun lebih baik ditangani oleh salah satu mekanisme yang disesuaikan dengan pengelogan. Halaman ini menyajikan gambaran umum setiap mekanisme ini dan menjelaskan kapan mekanisme tertentu harus digunakan.

Referensi cepat

Tabel di bawah ini menyediakan referensi singkat untuk perbedaan antar mekanisme yang dijelaskan di sini.

Mekanisme Asinkron Cakupan Terdaftar Penggunaan yang dimaksudkan
Pengelogan Sederhana Tidak Sesuai konteks Konfigurasi konteks Pengelogan waktu pengembangan
Microsoft.Extensions.Logging Tidak Sesuai konteks* D.I. atau konfigurasi konteks Pengelogan produksi
Aktivitas Tidak Sesuai konteks Kapan saja Bereaksi pada peristiwa EF
Interseptor Ya Sesuai konteks Konfigurasi konteks Memanipulasi operasi EF
Pendengar diagnostik Tidak Proses Secara global Diagnostik aplikasi

*Pada umumnya Microsoft.Extensions.Logging dikonfigurasi sesuai aplikasi via injeksi dependensi. Namun, pada level EF, setiap konteks dapat dikonfigurasi dengan pencatat yang berbeda, jika diperlukan.

Pengelogan sederhana

Log EF Core dapat diakses dari segala jenis aplikasi melalui penggunaan LogTo saat mengonfigurasi instans DbContext. Konfigurasi ini pada umumnya dilakukan untuk mengambil alih DbContext.OnConfiguring. Contohnya:

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

Konsep ini serupa dengan Database.Log in EF6.

Lihat Pengelogan Sederhana untuk informasi selengkapnya.

Microsoft.Extensions.Logging

Microsoft.Extensions.Logging merupakan mekanisme pengelogan yang dapat diperluas dengan penyedia plug-in untuk banyak sistem pengelogan. EF Core sepenuhnya terintegrasi dengan Microsoft.Extensions.Logging, dan bentuk pengelogan ini digunakan secara default untuk aplikasi ASP.NET Core.

Lihat Menggunakan Microsoft.Extensions.Logging di EF Core untuk informasi selengkapnya.

Aktivitas

EF Core mengekspos peristiwa .NET untuk berperan sebagai panggilan balik saat hal tertentu terjadi pada kode EF Core. Peristiwa lebih sederhana dibandingkan interseptor dan memungkinkan pendaftaran yang lebih fleksibel. Namun, mereka hanya disinkronkan sehingga tidak bisa melakukan I/O asinkron non-pemblokiran.

Peristiwa didaftarkan per instans DbContext dan dapat dilakukan kapan saja. Menggunakan pendengar diagnostik untuk mendapatkan informasi yang sama, namun untuk seluruh instans DbContext dalam prosesnya.

Lihat Peristiwa .NET di EF Core untuk informasi selengkapnya.

Interception

Interseptor EF Core memungkinkan intersepsi, modifikasi, dan/atau penekanan operasi EF Core. Ia termasuk operasi database tingkat rendah seperti menjalankan perintah, serta operasi tingkat yang lebih tinggi seperti panggilan ke SaveChanges.

Interseptor berbeda dari pengelogan dan diagnostik, karena memungkinkan modifikasi atau pencegatan penekanan operasi. Pengelogan sederhana atau Microsoft.Extensions.Logging merupakan pilihan yang lebih baik untuk pengelogan.

Interseptor didaftarkan per instans DbContext saat konteks dikonfigurasi. Menggunakan pendengar diagnostik untuk mendapatkan informasi yang sama, namun untuk seluruh instans DbContext dalam prosesnya.

Lihat Intersepsi untuk informasi selengkapnya.

Pendengar diagnostik

Pendengar diagnostik memungkinkan mendengarkan peristiwa EF Core apa pun yang terjadi di dalam proses .NET saat ini.

Pendengar diagnostik tidak sesuai untuk mendapatkan peristiwa hanya dari satu instans DbContext. Interseptor EF Core menyediakan akses menuju peristiwa yang sama dengan pendaftaran per konteks.

Pendengar diagnostik tidak dirancang untuk melakukan pengelogan. Pengelogan sederhana atau Microsoft.Extensions.Logging merupakan pilihan yang lebih baik untuk pengelogan.

Lihat Menggunakan pendengar diagnostik pada EF Core untuk informasi selengkapnya.