写代码很容易出现Bug,如何快速定位到BUG出现的位置和原因,这里利用利用Try Catch将异常写入Log文件。
刚开始代码出现Bug,是通过单步调试或者断点调试,比较麻烦,后来将其写入Log文件,而且几乎每次都要写这个函数,所以把这段代码提取出来生成dll文件,每次想用的时候引用就好,这里将其记录下来
1.下面是用来测试的主程序入口
class Program
{
static void Main(string[] args)
{
Program test = new Program();
try
{
int[] aa = { 1 };
Console.WriteLine(aa[2]);
}
catch (Exception e)
{
test.WriteLog(e);
}
Console.WriteLine("sucessfully");
Console.ReadKey();
}
}
2.下面的WriteLog函数功能就是将Bug出现的位置和原因写入Log文件,方便自己修改,其中涉及的Exception.StackTrace参考MADN:Exception Class,其他的就是简单的文件读写
public void WriteLog(Exception ex)
{
//ex.StackTrace.ToString().Substring(e.StackTrace.ToString().LastIndexOf('\\') + 1)是得到异常出现的类和行号
//ex.Message是异常出现的原因
string exceptionStr= ex.StackTrace.ToString().Substring(e.StackTrace.ToString().LastIndexOf('\\') + 1) + " " + ex.Message;
exceptionStr = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss ") + exceptionStr;
string sFilePath = "C:\\Logs";//自己定义一个存储log文件的位置
string sFileName = DateTime.Now.ToString("yyyy-MM-dd") + ".log";
sFileName = sFilePath + @"\\" + sFileName;
if (!Directory.Exists(sFilePath))
{
Directory.CreateDirectory(sFilePath);
}
FileStream fs;
StreamWriter sw;
if (System.IO.File.Exists(sFileName))
{
fs = new FileStream(sFileName, FileMode.Append, FileAccess.Write);
}
else
{
fs = new FileStream(sFileName, FileMode.Create, FileAccess.Write);
}
sw = new StreamWriter(fs);
sw.WriteLine(exceptionStr);
sw.Close();
fs.Close();
}