EF Core使用Simple Logging輸出日誌

EF Core使用Simple Logging輸出日誌

在使用EF Core的時候,很多時候需要知道EF Core實際執行的SQL語句是什麼。

最後更新 2022/5/4 下午3:56
MyIO
預計閱讀 2 分鐘
分類
EF Core
標籤
.NET C# EF Core ORM

在使用 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();

繼續探索

延伸閱讀

更多文章