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

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

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

 using System;
using System.IO;
using System.Text; namespace TestService
{
public class ErrorLog
{
public static void ErrorLogTxt(Exception ex)
{
//获取文件路径(相对于程序的基目录路径)
string FilePath = AppDomain.CurrentDomain.BaseDirectory + "/File/ErrorLog.txt"; StringBuilder msg = new StringBuilder();
msg.Append("*************************************** \r\n");
msg.AppendFormat(" 异常发生时间: {0} \r\n", DateTime.Now);
msg.AppendFormat(" 异常类型: {0} \r\n", ex.HResult);
msg.AppendFormat(" 导致当前异常的 Exception 实例: {0} \r\n", ex.InnerException);
msg.AppendFormat(" 导致异常的应用程序或对象的名称: {0} \r\n", ex.Source);
msg.AppendFormat(" 引发异常的方法: {0} \r\n", ex.TargetSite);
msg.AppendFormat(" 异常堆栈信息: {0} \r\n", ex.StackTrace);
msg.AppendFormat(" 异常消息: {0} \r\n", ex.Message);
msg.Append("***************************************"); try
{
if (File.Exists(FilePath))//如果文件存在
{
//写异常信息写入文件
using (StreamWriter tw = File.AppendText(FilePath))
{
tw.WriteLine(msg.ToString());
}
}
else
{
//如果文件不存在则创建后将异常信息写入
TextWriter tw = new StreamWriter(FilePath);
tw.WriteLine(msg.ToString());
tw.Flush();//将缓冲区的数据强制输出,清空缓冲区
tw.Close();//关闭数据流
tw = null;
}
}
catch (Exception exx)
{
Console.ReadKey();
} }
}
}

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

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

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

日志记录效果:

End!

C#将异常信息添加到日志的更多相关文章

  1. asp.net core全局异常过滤并监控系统BUG将异常信息记录到日志

    添加: using Dw.Util.Helper; using Microsoft.AspNetCore.Mvc.Filters; using System; using System.Collect ...

  2. .Net捕获网站异常信息记录操作日志

    第一步:在Global.asax文件下的Application_Error()中写入操作日志 /// <summary> /// 整个网站出现异常信息,都会执行此方法 /// </s ...

  3. Log4Net在MVC下的配置以及运用线程队列记录异常信息

    Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运 ...

  4. c#.NET中日志信息写入Windows日志中解决方案

    1. 目的应用系统的开发和维护离不开日志系统,选择一个功能强大的日志系统解决方案是应用系统开发过程中很重要的一部分.在.net环境下的日志系统解决方案有许多种,log4net是其中的佼佼者.在Wind ...

  5. PHP 错误与异常 笔记与总结(14 )记录和发送异常信息

    当发生异常时,把异常信息记录到日志文件中: <?php header('content-type:text/html; charset=utf-8'); class LogException e ...

  6. .NetCore中使用ExceptionLess 添加操作日志

    上一篇文章已经扩展了日志,下面我们在结合下处理操作日志 通常我们想到操作日志 可能想到的参数可能有 模块 方法 参数内容 操作人 操作时间 操作 Ip 下面我们就来结合这些信息添加操作日志 如果要在代 ...

  7. C#添加错误日志信息

    错误日志是软件用来记录运行时出错信息的文本文件.编程人员和维护人员等可以利用错误日志对系统进行调试和维护. 系统日志 系统日志包含了由Windows系统组件记录的事件.例如,在启动期间装入驱动程序或其 ...

  8. 在日志中记录Java异常信息的正确姿势

    遇到的问题 今天遇到一个线上的BUG,在执行表单提交时失败,但是从程序日志中看不到任何异常信息. 在Review源代码时发现,当catch到异常时只是输出了e.getMessage(),如下所示: l ...

  9. Atitit mysql 存储过程捕获所有异常,以及日志记录异常信息

    Atitit mysql 存储过程捕获所有异常,以及日志记录异常信息 1.1. 异常的处理模式exit  continue undo模式 1 1.2. 捕获所有异常使用        DECLARE ...

随机推荐

  1. 201871020225-牟星源《面向对象程序设计(JAVA)》第二周学习总结

    正文: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-dai ...

  2. HDU - 5126: stars (求立方体内点数 CDQ套CDQ)

    题意:现在给定空空的三维平面,有加点操作和询问立方体点数. 思路:考虑CDQ套CDQ.复杂度是O(NlogN*logN*logN),可以过此题. 具体的,这是一个四维偏序问题,4维分别是(times, ...

  3. [codevs3044]矩形面积求并

    题目描述 Description 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入描述 Input Description 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行 ...

  4. 【CSP-S膜你考】不怕噩梦 (模拟)

    不怕噩梦 题面 蚊子最近经常做噩梦,然后就会被吓醒.这可不好.. 疯子一直在发愁,然后突然有一天,他发现蚊子其实就是害怕某些事. 如果那些事出现在她的梦里,就会害怕. 我们可以假定那个害怕的事其实是一 ...

  5. CSS3实现PS中的蚁行线动画以及画布的马赛克背景图

    话不多说,先看例子,外链 效果截图如下: 蚁行线 马赛克背景 代码: 蚁行线代码如下: /* <!-- HTML代码 --> <div class="ant"&g ...

  6. gamma测试报告

    Gamma阶段测试报告 测试计划及结果 我们针对测试做了比较多的改进. 测试代码分为针对纯java部分的单元测试和需要android运行环境的自动化仪器化测试 单元测试 这一部分基本继承Beta阶段的 ...

  7. 【Activiti学习之五】BPMN事件

    环境 JDK 1.8 MySQL 5.6 Tomcat 7 Eclipse-Luna activiti 6.0 一.事件定义1.定时器事件(1)timeDate:指定时间触发<timerEven ...

  8. .NET Core 获取自定义配置文件信息

    前言 .net core来势已不可阻挡.既然挡不了,那我们就顺应它.了解它并学习它.今天我们就来看看和之前.net版本的配置文件读取方式有何异同,这里不在赘述.NET Core 基础知识. ps:更新 ...

  9. Proxy代理对象是如何调用invoke()方法的.

    直奔主题,不说废话.先看java使用Proxy创建代理对象的代码. //一个开发者接口public interface Developer { String code(); void debug(); ...

  10. SWIG 3 中文手册——2. 引言

    目录 2 引言 2.1 SWIG 是什么? 2.2 为什么使用 SWIG? 2.3 一个 SWIG 示例 2.3.1 SWIG 接口文件 2.3.2 swig 命令 2.3.3 构建 Perl5 模块 ...