EntityFramework Coreで実行したクエリのログを出力する設定は以下の通りDbContextクラスのOnConfiguringをオーバーライドしてoptionsBuilder.EnableSensitiveDataLogging();
を設定すればOKです。ただ、SensitiveDataLogging
というパラメーター名からも分かる通りログにパラメターが出力されることがNGなケースもあるのでそのへんは注意が必要ですね。
public class BeagleBaseContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // この設定により引数のログが出力される optionsBuilder.EnableSensitiveDataLogging(); } }
出力されるログ
出力されるログは正直あまり使い勝手がいいログではありません。せめてJSONとかならParseし易いのですが、そのままだと以下のように出力されます。
[14:56:28 INF] Executed DbCommand (0ms) [Parameters=[@__get_Item_0='b0d0d15e-8d35-4cf0-afcf-ffe3580ba264' (Size = 36)], CommandType='Text', CommandTimeout='30'] SELECT "e"."id", "e"."application_id", "e"."building_name", "e"."celler_phone_no", "e"."city_name", "e"."code", "e"."contractor_id", "e"."created_at", "e"."display_flg", "e"."email", "e"."fax_no", "e"."location", "e"."name", "e"."name_kana", "e"."phone_no", "e"."pref_code", "e"."street_name", "e"."town_name", "e"."unit_name", "e"."url", "e"."zip_code", "e"."xmin" FROM "organizations" AS "e" WHERE "e"."id" = @__get_Item_0 LIMIT 1
おそらく出力処理をカスタマイズできると思いますが、調査してみないとですね。
参考
c# - Lost parameter value during SQL trace in EF Core - Stack Overflow
DbContextOptionsBuilder Class (Microsoft.EntityFrameworkCore) | Microsoft Docs
実戦で役立つ C#プログラミングのイディオム/定石&パターン
- 作者: 出井秀行
- 出版社/メーカー: 技術評論社
- 発売日: 2017/02/18
- メディア: Kindle版
- この商品を含むブログを見る