C#将异常信息添加到日志


C#将程序抛出的异常信息添加到错误日志

错误日志是软件用来记录运行时出错信息的文本文件。编程人员和维护人员等可以利用错误日志对系统进行调试和维护。

为程序添加错误日志的好处是当程序有运行错误时,根据错误日志我们可以快速定位到错误,排查原因、解决问题,这是对于运行在线上而不能调试的网站的一个非常有必要的功能。

 1 using System;
 2 using System.IO;
 3 using System.Text;
 4 
 5 namespace TestService
 6 {
 7     public class ErrorLog
 8     {
 9         public static void ErrorLogTxt(Exception ex)
10         {
11             //获取文件路径(相对于程序的基目录路径)
12             string FilePath = AppDomain.CurrentDomain.BaseDirectory + "/File/ErrorLog.txt";
13 
14             StringBuilder msg = new StringBuilder();
15             msg.Append("*************************************** \r\n");
16             msg.AppendFormat(" 异常发生时间: {0} \r\n", DateTime.Now);
17             msg.AppendFormat(" 异常类型: {0} \r\n", ex.HResult);
18             msg.AppendFormat(" 导致当前异常的 Exception 实例: {0} \r\n", ex.InnerException);
19             msg.AppendFormat(" 导致异常的应用程序或对象的名称: {0} \r\n", ex.Source);
20             msg.AppendFormat(" 引发异常的方法: {0} \r\n", ex.TargetSite);
21             msg.AppendFormat(" 异常堆栈信息: {0} \r\n", ex.StackTrace);
22             msg.AppendFormat(" 异常消息: {0} \r\n", ex.Message);
23             msg.Append("***************************************");
24 
25             try
26             {
27                 if (File.Exists(FilePath))//如果文件存在
28                 {
29                     //写异常信息写入文件
30                     using (StreamWriter tw = File.AppendText(FilePath))
31                     {
32                         tw.WriteLine(msg.ToString());
33                     }
34                 }
35                 else
36                 {
37                     //如果文件不存在则创建后将异常信息写入
38                     TextWriter tw = new StreamWriter(FilePath);
39                     tw.WriteLine(msg.ToString());
40                     tw.Flush();//将缓冲区的数据强制输出,清空缓冲区
41                     tw.Close();//关闭数据流
42                     tw = null;
43                 }
44             }
45             catch (Exception exx)
46             {
47                 Console.ReadKey();
48             }
49 
50         }
51     }
52 }

在使用 TextWrite 对象时,在最后一定要记得手动关闭,否则会造成意想不到的错误,特别是内存泄露。

使用异常日志记录方法 ,在程序可能出现异常的地方用 try ... catch 块来包装,在 catch 块中调用这个异常的方法,将异常日志记录下来

 1 public LoginResult RegistSend(MainInfoResult model, string uver)
 2 {
 3    try
 4    {
 5       Sends(model.UEmail, "注册账号", uver);
 6       result.Status = ResultStatus.Success;
 7       result.Message = "验证码已发送至您的邮箱!";
 8    }
 9    catch (Exception ex)
10    {
11       ErrorLog.ErrorLogTxt(ex);//调用错误日志类
12       result.Status = ResultStatus.Fail;
13       result.Message = ex.Message;
14    }
15    return result;
16 }

日志记录效果:

End!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM