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
歡迎關注RDIFramework.net框架官方公眾微信(微信號:guosisoft),及時了解最新動態。
掃描二維碼立即關注

作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機號)
框架官網:
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發框架
,
給用戶和開發者最佳的.Net框架平臺方案,為企業快速構建跨平臺、企業級的應用提供強大支持。
關于作者:系統架構師、信息系統項目管理師、DBA。專注于微軟平臺項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織并開發多個大型項目,在面向對象、面向服務以及數據庫領域有一定的造詣。現主要從事基于
RDIF
框架的技術開發、咨詢工作,主要服務于金融、醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。
如有問題或建議,請多多賜教!
本文版權歸作者和CNBLOGS博客共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯系我,非常感謝。

浙公網安備 33010602011771號