Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Entity Framework Core (EF Core) berisi beberapa mekanisme untuk menghasilkan log, merespons peristiwa, dan mendapatkan diagnostik. Masing-masing disesuaikan dengan situasi yang berbeda, dan penting untuk memilih mekanisme terbaik untuk tugas di tangan, bahkan ketika beberapa mekanisme dapat berfungsi. Misalnya, interseptor database dapat digunakan untuk melog SQL, tetapi ini lebih baik ditangani oleh salah satu mekanisme yang dikhususkan untuk pencatatan log. Halaman ini menyajikan gambaran umum masing-masing mekanisme ini dan menjelaskan kapan masing-masing harus digunakan.
Referensi cepat
Tabel di bawah ini menyediakan referensi cepat untuk perbedaan antara mekanisme yang dijelaskan di sini.
| Mekanisme | Asinkron | Ruang lingkup | Terdaftar | Penggunaan yang dimaksudkan |
|---|---|---|---|---|
| Pengelogan Sederhana | No | Per konteks | Konfigurasi konteks | Pencatatan log saat pengembangan |
| Microsoft.Extensions.Logging | No | Per konteks* | D.I. atau konfigurasi konteks | Pencatatan produksi |
| Events | No | Per konteks | Kapan saja | Bereaksi terhadap peristiwa EF |
| Interseptor | Yes | Per konteks | Konfigurasi konteks | Memanipulasi operasi EF |
| Pendengar diagnostik | No | Proses | Global | Diagnostik aplikasi |
*Biasanya Microsoft.Extensions.Logging dikonfigurasi per aplikasi melalui injeksi dependensi. Namun, pada tingkat EF, setiap konteks dapat dikonfigurasi dengan pencatat yang berbeda jika diperlukan.
Pengelogan sederhana
Log EF Core dapat diakses dari semua jenis aplikasi melalui penggunaan LogTo saat mengonfigurasi instans DbContext. Konfigurasi ini biasanya dilakukan dalam override DbContext.OnConfiguring. Contohnya:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.LogTo(Console.WriteLine);
Konsep ini mirip Database.Log dengan di EF6.
Lihat Pencatatan Sederhana untuk informasi lebih lanjut.
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging adalah mekanisme pengelogan yang dapat diperluas dengan penyedia plug-in untuk banyak sistem pengelogan umum. 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.
Events
EF Core mengekspos peristiwa .NET untuk bertindak sebagai panggilan balik ketika hal-hal tertentu terjadi dalam kode EF Core. Acara lebih sederhana daripada interseptor dan memungkinkan registrasi yang lebih fleksibel. Namun, mereka hanya sinkron dan tidak dapat melakukan I/O asinkron yang tidak memblokir.
Peristiwa didaftarkan per instans DbContext dan pendaftaran ini dapat dilakukan kapan saja. Gunakan pendengar diagnostik untuk mendapatkan informasi yang sama tetapi untuk semua instance DbContext pada proses.
Lihat Peristiwa .NET di EF Core untuk informasi selengkapnya.
Penyadapan
Pencegat EF Core memungkinkan intersepsi, modifikasi, dan/atau penindasan operasi EF Core. Ini termasuk operasi database tingkat rendah seperti menjalankan perintah, serta operasi tingkat yang lebih tinggi, seperti panggilan ke SaveChanges.
Pencegat berbeda dari pencatatan dan diagnostik karena pencegat memungkinkan modifikasi atau penghentian operasi yang dicegat. Pengelogan sederhana atau Microsoft.Extensions.Logging adalah pilihan yang lebih baik untuk pengelogan.
Pencegat didaftarkan per instans DbContext saat konteks dikonfigurasi. Gunakan pendengar diagnostik untuk mendapatkan informasi yang sama tetapi untuk semua instance DbContext pada proses.
Lihat Intersepsi untuk informasi selengkapnya.
Pendengar diagnostik
Pendengar diagnostik memungkinkan mendengarkan peristiwa EF Core apa pun yang terjadi dalam proses .NET saat ini.
Pendengar diagnostik tidak cocok untuk menerima kejadian dari satu instance DbContext. Pencegat EF Core menyediakan akses ke peristiwa yang sama dengan registrasi per konteks.
Pendengar diagnostik tidak dirancang untuk pencatatan. Pengelogan sederhana atau Microsoft.Extensions.Logging adalah pilihan yang lebih baik untuk pengelogan.
Lihat Menggunakan pendengar diagnostik di EF Core untuk informasi selengkapnya.