• C#开发中,添加错误日志功能,并自定义错误页面


    参考地址:https://blog.csdn.net/yiyelanxin/article/details/72778972

    在Global.asax中,添加Application_Error如下代码.

    protected void Application_Error()
    {
    var e = Server.GetLastError();
    var httpError = e as HttpException;

    //错误日志
    //在出现未处理的错误时运行的代码
    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("错误编码:" + httpError.GetHttpCode());
    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();
    }
    }

    /////自定义错误页面

    //默认500
    if (httpError == null)
    {
    Server.Transfer("~/Errors/500.html");
    //Response.WriteFile("~/Errors/500.html");
    Server.ClearError();
    }
    else
    {
    var errorCode = httpError.GetHttpCode();
    if (errorCode == 404)
    {
    Server.Transfer("~/Errors/404.html");
    Server.ClearError();
    }
    }
    }

  • 相关阅读:
    STM32 IAP程序 源码 和测试代码 有详细的中文注释
    mysql读写分离配置,利用mybatis实现,解释为什么dynamicDataSource不行
    mysql主从复制的配置总结
    Chapter 2 Open Book——7
    leetcode415---字符串大数相加
    Chapter 2 Open Book——6
    leetcode83,删除有序链表中的重复元素
    Chapter 2 Open Book——5
    Chapter 2 Open Book——4
    leetcode24,交换链表相邻的节点
  • 原文地址:https://www.cnblogs.com/kingsmart/p/13426161.html
Copyright © 2020-2023  润新知