取消

EF Core在日志中输出sql语句

在我们使用ef core的时候,有时候我们需要查看ef core生成的sql语句以便我们可以做进一步的分析处理。


修改日志级别输出日志

在配置文件appsettings.json中添加如下语句

1
2
3
4
5
6
7
8
 "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
++    "Microsoft.EntityFrameworkCore.Database": "Information"
    }
  }

这里相当于修改了ef core的默认输出日志级别,这样就会把sql输出,上面的配置对serilog依然有效

显示sql中的参数值

如果你的sql包含了参数,但是这样是不会输出参数值,参数值都是”?”,这是因为ef默认会对数据进行保护,如果需要显示参数值需要在DbContext中添加如下配置。

1
2
3
4
5
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
++  optionsBuilder.EnableSensitiveDataLogging();
    base.OnConfiguring(optionsBuilder);
}

参考资料

本文会经常更新,请阅读原文: https://dashenxian.github.io/post/EF-Core%E5%9C%A8%E6%97%A5%E5%BF%97%E4%B8%AD%E8%BE%93%E5%87%BAsql%E8%AF%AD%E5%8F%A5 ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 小神仙 (包含链接: https://dashenxian.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (125880321@qq.com)

登录 GitHub 账号进行评论