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();
