public partial class DataClasses1DataContext
{
public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
{
//記錄日志(每天一個文件,記錄所有更改sql,日志會存在第一個盤的log文件夾下)
string directory = Path.Combine(Directory.GetLogicalDrives().First(), "log");
Directory.CreateDirectory(directory);
string logFile = Path.Combine(directory,
"log" + DateTime.Now.ToLongDateString() + ".txt");
using (StreamWriter w = File.AppendText(logFile))
{
w.WriteLine("發生時間:{0}", DateTime.Now.ToString());
w.WriteLine("日志內容為:");
this.Log = w;
try
{
base.SubmitChanges(failureMode);
}
catch (Exception e)
{
w.WriteLine("異常:" + e.Message + e.StackTrace);
w.WriteLine("--------------------------------------------------------------");
throw;
}
finally
{
this.Log = null;
}
w.WriteLine("--------------------------------------------------------------");
}
}
}
如果想把sql語句全部記錄到數據庫的代碼如下:
Code public partial class DataClasses1DataContext
{
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
sw.WriteLine("發生時間:{0}", DateTime.Now.ToString());
sw.WriteLine("日志內容為:");
this.Log = sw;
try
{
base.SubmitChanges(failureMode);
string sqlStr = "insert into logTable(Content)values( '"+sb.ToString()+"')";
//SqlConnection con=
using (SqlConnection con=new SqlConnection(this.Connection.ConnectionString))
{
con.Open();
SqlCommand cmd = new SqlCommand(sqlStr, con);
cmd.ExecuteNonQuery();
}
}
catch (Exception e)
{
//記錄日志(每天一個文件,記錄所有更改sql,日志會存在第一個盤的log文件夾下)
string directory = Path.Combine(Directory.GetLogicalDrives().First(), "log");
Directory.CreateDirectory(directory);
string logFile = Path.Combine(directory,
"log" + DateTime.Now.ToLongDateString() + ".txt");
using (StreamWriter w = File.AppendText(logFile))
{
w.WriteLine("發生時間:{0}", DateTime.Now.ToString());
w.WriteLine("日志內容為:");
w.WriteLine(e.Message);
}
}
finally
{
this.Log = null;
}
}
源碼下載
http://files.cnblogs.com/nuaalfm/LogLinqSql.rar
http://www.cnblogs.com/nuaalfm/archive/2009/01/20/1378841.html
新聞熱點
疑難解答
圖片精選