zoukankan      html  css  js  c++  java
  • 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),及时了解最新动态。

           扫描二维码立即关注

  • 相关阅读:
    uva 147 Dollars
    hdu 2069 Coin Change(完全背包)
    hdu 1708 Fibonacci String
    hdu 1568 Fibonacci
    hdu 1316 How Many Fibs?
    poj 1958 Strange Towers of Hanoi
    poj 3601Tower of Hanoi
    poj 3572 Hanoi Tower
    poj 1920 Towers of Hanoi
    筛选法——素数打表
  • 原文地址:https://www.cnblogs.com/huyong/p/6490609.html
Copyright © 2011-2022 走看看