三种方法一种是EF自带的功能只需要配置web.config就可以了
在web.config中增加 interceptors 节点即可.

<configuration>
 <entityFramework>
   <interceptors>
      <interceptor type="System.Data.Entity.Infrastructure.Interception.DatabaseLogger, EntityFramework">
        <parameters>
          <parameter value="E:\www\efsql.log" />
          <parameter value="true" type="System.Boolean" />
        </parameters>
      </interceptor>
    </interceptors>  
    
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  </configuration>

第二种使用 MiniProfiler
第三种使用 代码自己写一个监听器

public JDDbContext() : base("name=JDDbContext")
{
    this.Database.Log += c => Console.WriteLine($"sql:{c}");
}

还有其它的很多种方法,不一一列举了.