• 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 + @"LogQuery";
                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
    

           欢迎关注RDIFramework.net框架官方公众微信微信号:guosisoft),及时了解最新动态。

           扫描二维码立即关注

  • 相关阅读:
    Linux模拟网络延迟、丢包等
    TestLink汉化操作
    onems设备管理系统(TR-069和OMA)
    Installation Guide Ubuntu 16.04
    Configure GenieACS
    Linux下的tar压缩解压缩命令详解
    genieacs Installation on Ubuntu14.04
    Pyqt中富文本编辑器
    安装MongoDB
    到底什么是贝叶斯?
  • 原文地址:https://www.cnblogs.com/huyong/p/6490609.html
Copyright © 2020-2023  润新知