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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

有时我们需要记录整个系统运行的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的执行情况,可以调用框架提供的公共接口,如下图所示:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#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

 



本文转自yonghu86博客园博客,原文链接:http://www.cnblogs.com/huyong/p/6490609.html,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
357 3
|
4月前
|
SQL 存储 测试技术
SQL在构建系统中的应用:关键步骤与技巧
在构建基于数据库的应用系统时,SQL(Structured Query Language)作为与数据库交互的核心语言,扮演着至关重要的角色
|
2月前
|
前端开发 C# 开发者
.NET使用Umbraco CMS快速构建一个属于自己的内容管理系统
.NET使用Umbraco CMS快速构建一个属于自己的内容管理系统
41 12
|
2月前
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
|
2月前
|
开发框架 JavaScript 前端开发
精选2款.NET开源的博客系统
精选2款.NET开源的博客系统
|
2月前
|
前端开发 JavaScript C#
基于.NET8+Vue3开发的权限管理&个人博客系统
基于.NET8+Vue3开发的权限管理&个人博客系统
|
3月前
|
开发框架 安全 Java
.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力
本文深入探讨了.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力。.NET不仅支持跨平台开发,具备出色的安全性和稳定性,还能与多种技术无缝集成,为企业级应用提供全面支持。
54 3
|
4月前
|
关系型数据库 C# 数据库
.NET 8.0 开源在线考试系统(支持移动端)
【10月更文挑战第27天】以下是适用于 .NET 8.0 的开源在线考试系统(支持移动端)的简介: 1. **基于 .NET Core**:跨平台,支持多种数据库,前后端分离,适用于多操作系统。 2. **结合 Blazor**:使用 C# 开发 Web 应用,支持响应式设计,优化移动端体验。 3. **基于 .NET MAUI**:跨平台移动应用开发,一套代码多平台运行,提高开发效率。 开发时需关注界面设计、安全性与稳定性。
|
4月前
|
SQL 存储 数据库
SQL在构建系统中的应用:关键要素与编写技巧
在构建基于数据库的系统时,SQL(Structured Query Language)扮演着至关重要的角色
|
4月前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。