RDIFramework.NET ━ .NET快速信息化系统开发框架 记录所有操作的Sql
在实际开发或试运行过程中,我们有时需要查看或分析模块执行的所有sql,以便进行相关分析。有时我们可以通过数据库自带的软件抓取,如:SQL Server Profiler。在我们RDIFramework.NET框架中已经提供了对Sql执行的跟踪支持,只需要把“LogSQL”配置项设置为True即可。
WinForm配置如下图所示:
MVC配置为:Code\RDIFramework.MvcApp\XmlConfig\下的system.config
WebForm配置为:Code\RDIFramework.WebApp\下的Web.config
Web同时要指定:SystemInfo.StartupPath = HttpContext.Current.Server.MapPath("~/");
如下图所示
登录框架后,随便点击一些模块,再查看框架运行目录下的“\Log\Query\”文件夹下以日期开始的文本文件,如下图所示:
随便打开一个文件,就可以查看所有的sql,如下图:
方法参考:
/// <summary> /// 写入sql查询句日志 /// </summary> /// <param name="commandText"></param> public virtual void WriteLog(string commandText) { string fileName = DateTime.Now.ToString(SystemInfo.DateFormat) + " _ " + this.FileName; WriteLog(commandText, fileName); } /// <summary> /// 写入sql查询句日志 /// </summary> /// <param name="commandText">异常</param> /// <param name="fileName">文件名</param> public virtual void WriteLog(string commandText, string fileName = null) { if (string.IsNullOrEmpty(fileName)) { fileName = DateTime.Now.ToString(SystemInfo.DateFormat) + " _ " + this.FileName; } string returnValue = string.Empty; // 系统里应该可以配置是否记录异常现象 if (!SystemInfo.LogSQL) { return; } // 将异常信息写入本地文件中 string logDirectory = SystemInfo.StartupPath + @"\\Log\\Query"; if (!System.IO.Directory.Exists(logDirectory)) { System.IO.Directory.CreateDirectory(logDirectory); } string writerFileName = logDirectory + "\\" + fileName; if (!File.Exists(writerFileName)) { FileStream FileStream = new FileStream(writerFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); FileStream.Close(); } StreamWriter streamWriter = new StreamWriter(writerFileName, true, Encoding.Default); streamWriter.WriteLine(DateTime.Now.ToString(SystemInfo.DateTimeFormat) + " " + commandText); streamWriter.Close(); } public virtual void WriteLog(string commandText, IDbDataParameter[] dbParameters = null, string fileName = null) { // 系统里应该可以配置是否记录异常现象 if (!SystemInfo.LogSQL) { return; } if (string.IsNullOrEmpty(fileName)) { fileName = DateTime.Now.ToString(SystemInfo.DateFormat) + " _ " + FileName; } string message = string.Empty; message = DateTime.Now.ToString(SystemInfo.DateTimeFormat) + System.Environment.NewLine + "commandText内容" + System.Environment.NewLine + commandText; if (dbParameters != null) { StringBuilder sb = new StringBuilder(); foreach (var parameter in dbParameters) { sb.AppendLine(parameter.ParameterName + "=" + parameter.Value); } message += System.Environment.NewLine + "dbParameters内容" + System.Environment.NewLine + sb.ToString(); } string logDirectory = SystemInfo.StartupPath + @"\Log\Query"; if (!System.IO.Directory.Exists(logDirectory)) { System.IO.Directory.CreateDirectory(logDirectory); } string writerFileName = logDirectory + "\\" + fileName; if (!File.Exists(writerFileName)) { FileStream FileStream = new FileStream(writerFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); FileStream.Close(); } StreamWriter streamWriter = new StreamWriter(writerFileName, true, Encoding.Default); streamWriter.WriteLine(DateTime.Now.ToString(SystemInfo.DateTimeFormat) + " " + message); streamWriter.Close(); }
参考文章:
RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录
RDIFramework.NET平台代码生成器V3.0版本全新发布-更新于20160518(提供下载)
RDIFramework.NET ━ .NET快速信息化系统开发框架钜献 V3.0 版本强势发布
RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用
视频列表:
第1部分、框架在不同数据库中的配置
第1.1讲、RDIFramework.NET框架在SqlServer2008+中的配置与运行讲解
第1.2讲、RDIFramework.NET框架在Oracle11g+中的配置与运行讲解
第1.3讲、RDIFramework.NET框架在MySql 5.0+ 中的配置与运行讲解
第2部分、框架基于代码生成器的开发
第2.1讲、RDIFramework.NET框架基于代码生成器业逻辑层代码的生成
第2.2讲、RDIFramework.NET框架基于代码生成器生成MvcUI的讲解
第2.2.1讲、RDIFramework.NET框架基于代码生成器生成MvcUI的讲解_第2.2讲补充视频
第2.3讲、RDIFramework.NET框架基于代码生成器生成WebFormUI的讲解
第2.4讲、RDIFramework.NET框架基于代码生成器生成的业务逻辑进行WinForm程序的开发
一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,大家可以通过下面的地址了解详情。
RDIFramework.NET官方网站:http://www.rdiframework.net/
RDIFramework.NET官方博客:http://blog.rdiframework.net/
同时需要说明的,以后的所有技术文章以官方网站为准,欢迎大家收藏!
RDIFramework.NET框架由专业团队长期打造、一直在更新、一直在升级,请放心使用!
欢迎关注RDIFramework.net框架官方公众微信(微信号:guosisoft),及时了解最新动态。
扫描二维码立即关注
相关文章
- abp(net core)+easyui+efcore实现仓储管理系统——ABP升级7.3上(五十八)
- Getting Started with xUnit.net (desktop)
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
- SQL 横转竖 、竖专横 (转载) 使用Dapper.Contrib 开发.net core程序,兼容多种数据库 C# 读取PDF多级书签 Json.net日期格式化设置 ASPNET 下载共享文件 ASPNET 文件批量下载 递归,循环,尾递归 利用IDisposable接口构建包含非托管资源对象 《.NET 进阶指南》读书笔记2------定义不可改变类型
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
- Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor
- MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式
- ASP.NET MVC不可或缺的部分——DI(IOC)容器及控制器重构的剖析
- 学习asp.net的流程
- c# ASP.NET怎么看EF生成的SQL语句和EF执行的所有活动
- asp.net, c# 查询10天前的当天所有数据,精确到天 sql语句 用于SQLServer(mssql)
- asp.net中用split循环取出【,】之间的每一个值!(源码,实例!)
- windows net use命令
- snmp--CentOS安装Net-SNMP小计
- C#数据库教程1-使用ADO.NET操作sql server 2012
- .NET(C#)连接各类数据库
- ASP.NET MVC与Sql Server交互,把字典数据插入数据库
- 基于ASP.NET+SQL Server简单的 MVC 电商网站【100010406】
- delphi xe2 64位嵌入汇编问题 https://bbs.csdn.net/topics/390333981
- VB.NET与 sql数据库
- ASP.NET开源博客QBlog模板皮肤制作教程索引贴
- C# Asp.net中的AOP框架 Microsoft.CCI, Mono.Cecil, Typemock Open-AOP API, PostSharp -摘自网络 (可以利用反射 Attribute 进行面向切面编程 可以用在记录整个方法的Log方面)
- 使用ML.NET实现健康码识别