在使用 EF Core 的時候,很多時候需要知道 EF Core 實際執行的 SQL 陳述式是什麼。
Simple Logging 是 EF Core 提供的一項功能,可用於在開發和偵錯應用程式時輕鬆取得日誌。這種形式的日誌記錄需要最少的設定,而不需要其他 NuGet 套件。
功能一瞥
設定起來非常簡單,只需在 DbContext.OnConfiguring 實作中呼叫 LogTo 方法即可:
public class DefaultDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
...
options.LogTo(Console.WriteLine);
}
...
}
LogTo 需要一個 Action 委派接受字串,例如 Console.WriteLine,你也可以編寫自訂方法決定如何輸出日誌。
篩選
預設情況下,Simple Logging 記錄 Debug 或更高層級的每條日誌。這樣會導致輸出的日誌過多,對偵錯沒有任何幫助,可以限制只記錄 Information 或更高層級的日誌:
options.LogTo(Console.WriteLine,
Microsoft.Extensions.Logging.LogLevel.Information);
查詢標記
但是,這樣還是會產生很多日誌。這時我們可以結合 查詢標記,幫助我們快速定位到需要的日誌:
var users = context.User.TagWith("查詢所有使用者").ToList();
