RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增记录SQL执行过程

  有时我们需要记录整个系统运行的SQL以作分析,特别是在上线前这对我们做内部测试也非常有帮助,当然记录SQL的方法有很多,也可以使用三方的组件。3.2版本我们在框架底层新增了记录框架运行的所有SQl过程保存到用户指定的地方以便分析查看,只需要在配置文件把配置项”LogSQL”设置为True即可。框架会自动记录各常用数据库如:Oracle、SqlServer、MySQL等的操作情况。
  一、Web记录Sql执行情况
  1、在我们的Web项目中要记录SQL可以在Web的配置文件中设置LogSql配置项为True,默认为False,配置文件的位置MVC项目是在RDIFramework.MvcApp项目根目录下的XmlConfig文件夹下的system.config文件,WebForm项目是在RDIFramework.WebApp项目根目录下的Web.Config文件,设置配置项如下图所示:

  只要设置LogSQL为True,框架就会自动记录所有Sql执行过程并保存到指定目录,一般默认在Web项目根目录的Log文件夹下,如下图:

  2、查看记录的Sql。

  打开一个文件,查年记录的Sql情况,如下:

  二、WinForm记录Sql执行情况

  WinForm项目记录Sql与Web类似,一样的要修改Config.xml中的记录Sql的配置项,如下图所示。

  通过上面的配置后,一样的我们打开框架做一些操作后查看记录的Sql情况,如下图:

  三、公共方法调用

  如果我们需要单独记录sql的执行情况,可以调用框架提供的公共接口,如下图所示:

  下面把写日志的三个公共接口分享,需要的可以参考哟。

#region public virtual void WriteLog(string commandText, string fileName = null) 写入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();
        }
        #endregion
时间: 2024-10-12 20:48:07

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增记录SQL执行过程的相关文章

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2 新增解压缩工具类ZipHelper

在项目对文件进行解压缩是非常常用的功能,对文件进行压缩存储或传输可以节省流量与空间.压缩文件的格式与方法都比较多,比较常用的国际标准是zip格式.压缩与解压缩的方法也很多,在.NET 2.0开始,在System.IO.Compression中微软已经给我们提供了解压缩的方法GZipStream.对于GZipStream的使用以及优缺点网上已经有非常多的文章,本文主要讲的是利用三方开源组件ICSharpCode.SharpZipLib进行文件的解压缩. SharpZipLib地址:http://w

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增系统参数管理

欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 在V3.0版本的Web(Mvc.WebForm)与WinForm中我们新增了“系统参数管理”模块.系统参数管理的功能就非常广了,可以发挥我们的想象把所有可能的东西放在这儿定义,比如:系统的分页大小.系统的数据库类型.用户的访问限制等等一切可能的东西都可以在这儿定义,定义后通过框架提供的接口来使用即可.当然“系统参数”管理界面中有一些数据是系统生成的默认数据

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本新增序列管理

欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 在V3.0版本的Web(Mvc.WebForm)与WinForm中我们新增了“序列管理”模块.序列管理是对定义框架的序列或叫“排序码”进行管理,在很多界面中我们可以看到有排序按钮,这儿的定义就是针对排序按钮的,当然这儿不般不需要人工来维护,系统都是自动管理的,特殊情况下可能需要人工来维护,比如:我们想把某个表的序列以指定值开始递增,在这个界面我们就可以进行

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增查询引擎管理

欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录 在V3.0版本的Web(Mvc.WebForm)与WinForm中我们新增了“查询引擎管理”模块.主要分为两部分”查询引擎管理“与”查询引定义“.”查询引擎管理“主要是对整个系统的查询引擎定义进行分类管理,用户可以对整个系统所要用到的查询定义在这儿进行合理分类.在查询

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-&gt; “Tab”标签新增可“最大化”显示功能

最大化工作区的功能是非常必要的,特别是当模块功能比较多时,把工作区最大的展现出来就变得很重要,RDIFramework.NET V3.2版本对工作区新增了最大化工作区功能,最大化工作区后如下图所示:  具体使用的是layout布局,代码参考: 相关文章:     RDIFramework 平台代码生成器V3.2 发布版  RDIFramework.NET - 基于.NET的快速信息化系统开发框架 - 系列目录  RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-&gt;WinForm版本新增新的用户权限设置界面

在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用户可访问的模块(菜单)与相应的操作权限.需要给某些角色添加与移除相应的用户等等,如果没有一个灵活可靠的配置管理工具将会使权限控制变得十分麻烦.用户授权管理模块就是为了方便用户.角色权限的集中统一管理而开发的模块.在用户授权管理模块,操作员可以添加或移动用户到指定的角色.可以分配或授予指定用户的模块(菜单)的访问权限.可以收回或分配指定用户的操作(功能)权限.可以对所有用户.角色.模块(菜单).操作(功能

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-&gt; Web版本新增新的用户权限设置界面

在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用户可访问的模块(菜单)与相应的操作权限.需要给某些角色添加与移除相应的用户等等,如果没有一个灵活可靠的配置管理工具将会使权限控制变得十分麻烦.用户授权管理模块就是为了方便用户.角色权限的集中统一管理而开发的模块.在用户授权管理模块,操作员可以添加或移动用户到指定的角色.可以分配或授予指定用户的模块(菜单)的访问权限.可以收回或分配指定用户的操作(功能)权限.可以对所有用户.角色.模块(菜单).操作(功能

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-&gt;新增“行政区域管理”,同时大批量树采用异步加载

行政区划:简称政区,是国家为了进行分级管理而实行的区域划分.中国现行的行政区划实行如下原则:1.全国分为省.自治区.直辖市:2.省.自治区分为自治州.县.自治县.市:3.自治州分为县.自治县.市:4.县.自治县分为乡.民族乡.镇: 5.直辖市和较大的市分为区.县:6.国家在必要时设立的特别行政区.行政区划是国家为了进行分级管理而实行的区域划分.中国现行六级行政区,即省级.地级.县级.乡级.村级.组级,其中省.县.乡三级为基本行政区. “行政区域管理”基本在每一个业务系统中都会用到,框架从3.2版

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增锁定用户与解除锁定用户的功能

锁定用户功能在现实应用场景中得到了大量的应用,当我们需要限制某用户的登录,又不能删除这个用户时就可以使用锁定功能,如:未授权的用户尝试错误密码错误过多可以尝试的用户进行锁定,又如ATM机上取钱时密码错误输入过多也会对当前用户进行锁定等其他非常多的应用场合. RDIFramework.NET V3.2版本新增了用户锁定与解除锁定的功能,当指定用户被锁定后,就不能进行登录了,只有解除锁定后才可以登录.锁定用户与解除锁定放在了用户授权管理界面中. 锁定用户与解除锁定用户可以调用框架提供的下面两个接口处

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理

在RDIFramework.NET以往的框架中,模块管理界面展示了整个框架所管理的所有模块,如果系统过多,达几十个甚至上百个子系统时,管理起来就非常的麻烦,不光加载效率会很低,页面展示也会很不友好.框架从3.2版本开始对框架管理的模块按子系统进行分类管理,同时增加了子系统的管理.让整个模块的划分与规划更加的合理与规范,加载的效率也更高. 一.Web版模块按子系统管理 在3.2版本的RDIFramework.NET Web中模块管理进行了全新的展示,在模块管理主界面左上角列出来当前框架管理的所有业