C#错误异常日志记录到文件


当我们将网站布署到线上之后,为了实时了解网站的运行情况,如是否有错误页面、网站运行速度、是否有攻击等。那么我们就很有必要为网站加上错误与异常记录到日志文件,这样就可以随时查看网站的线上运行情况,另有一个好处是当网站有运行错误页面时,根据错误日志我们可以快速到定位到错误行进行排查原因、解决问题,这个是对于运行在线上而不能调试的网站的一个非常有必要的功能。 

具体实现方法:

在全局文件Global.asax.cs中添加Application_Error的方法。只要当程序有错误时程序就会自动执行该方法,从而记录到错误日志。

void Application_Error(object sender, EventArgs e)
{
    //在出现未处理的错误时运行的代码
    Exception ex = Server.GetLastError().GetBaseException();
    string errorTime = "异常时间:" + DateTime.Now.ToString();
    string errorAddress = "异常地址:" + Request.Url.ToString();
    string errorInfo = "异常信息:" + ex.Message;
    string errorSource = "错误源:" + ex.Source;
    string errorType = "运行类型:" + ex.GetType();
    string errorFunction = "异常函数:" + ex.TargetSite;
    string errorTrace = "堆栈信息:" + ex.StackTrace;
    Server.ClearError();
    System.IO.StreamWriter writer = null;
    try
    {
        lock (this)
        {
            //写入日志 
            string path = string.Empty;
            path = Server.MapPath("~/ErrorLogs/");
            //不存在则创建错误日志文件夹
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            path +=string.Format(@"\{0}.txt", DateTime.Now.ToString("yyyy-MM-dd"));
writer = !File.Exists(path) ? File.CreateText(path) : File.AppendText(path); //判断文件是否存在,如果不存在则创建,存在则添加
            writer.WriteLine("用户IP:" + Request.UserHostAddress);
            writer.WriteLine(errorTime);
            writer.WriteLine(errorAddress);
            writer.WriteLine(errorInfo);
            writer.WriteLine(errorSource);
            writer.WriteLine(errorType);
            writer.WriteLine(errorFunction);
            writer.WriteLine(errorTrace);
writer.WriteLine("********************************************************************************************");
        }
    }
    finally
    {
        if (writer != null)
        {
            writer.Close();
        }
    }
    Server.Transfer("~/500webpage.aspx"); //跳转到显示友好错误的页面
}
GarsonZhang www.yesdotnet.com

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:日志级别的选择:Debug、Info、Warn、Error还是Fatal
下一篇:C# 获得根路径
评论列表

发表评论

评论内容
昵称:
关联文章

C#错误异常日志记录文件
YESWEB接口日志记录
C#日志Log写入
C#常见异常列表
C# Winform 自定义异常处理方法
在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息
Winform开发框架日志管理
GIT彻底删除文件以及历史记录
关于PaddleSharp GPU使用 常见问题记录
VS2019找不资产文件 "xxxx\obj\project.assets.json" 解决方案
.Net Core 5.x Api开发笔记 -- 基础日志(Log4Net)(八)
Python 重构Print 日志记录
版本记录
.net Core项目 IIS部署运行异常信息输出
WPF开发随笔收录-本地日志LogUtil类
Python读取文件 发生异常: UnicodeDecodeError 'gbk' codec can't decode byte
C# winform选择dll文件
.NETCore用Process.Start打开网址出现异常
.net Core编译出现错误:指定的任务可执行文件“sgen.exe”未能运行,文件名或扩展名太长
C#读取被进程占用的文件,只读模式打开文件

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码