asp.net 程序异常捕获全局处理,生成错误日志

只需要把以下代码粘贴到Global.asax 文件中即可

        private void Application_Error(object sender, EventArgs e)
        {
            // 在出现未处理的错误时运行的代码


            try
            {
                Exception objErr = Server.GetLastError().GetBaseException();
                string error = "发生异常页: " + Request.Url.ToString() + "
";
                error += "异常信息: " + objErr.Message + "
";
                Server.ClearError();
                Application["error"] = error;
                //Response.Redirect("ErrorPage.html");
                // 在出现未处理的错误时运行的代码
                string errortime = string.Empty;
                string erroraddr = string.Empty;
                string errorinfo = string.Empty;
                string errorsource = string.Empty;
                string errortrace = string.Empty;
                error += "发生时间:" + System.DateTime.Now.ToString() + "
";
                errortime = "发生时间:" + System.DateTime.Now.ToString();
                error += "发生异常页: " + Request.Url.ToString() + "
";
                erroraddr = "发生异常页: " + Request.Url.ToString();
                error += "异常信息: " + objErr.Message + "
";
                errorinfo = "异常信息: " + objErr.Message;
                errorsource = "错误源:" + objErr.Source;
                errortrace = "堆栈信息:" + objErr.StackTrace;
                error += "--------------------------------------
";
                Server.ClearError();
                Application["error"] = error;
                //独占方式,因为文件只能由一个进程写入.


                if (objErr.Source.ToLower() != "system.web")
                {
                    System.IO.StreamWriter writer = null;
                    try
                    {
                        lock (this)
                        {
                            // 写入日志
                            string year = DateTime.Now.Year.ToString();
                            string month = DateTime.Now.Month.ToString();
                            string path = string.Empty;
                            string filename = "/ErrorLog" + DateTime.Now.Day.ToString() + ".txt";
                            path = @"D:/蜜蜂服务网系统错误日志/ErrorLog/" + year + month;
                            //如果目录不存在则创建
                            if (!System.IO.Directory.Exists(path))
                            {
                                System.IO.Directory.CreateDirectory(path);
                            }
                            System.IO.FileInfo file = new System.IO.FileInfo(path + filename);
                            writer = new System.IO.StreamWriter(file.FullName, true);
                            writer.WriteLine("用户IP:" + Request.UserHostAddress);
                            writer.WriteLine(errortime);
                            writer.WriteLine(erroraddr);
                            writer.WriteLine(errorinfo);
                            writer.WriteLine(errorsource);
                            writer.WriteLine(errortrace);
                            writer.WriteLine("--------------------------------------------------------------------------------------");
                        }
                    }
                    finally
                    {
                        if (writer != null)
                            writer.Close();
                    }
                }
            }
            catch { }
        }

以上内容由以下作者提供

       www.mflife.cc

asp.net 程序异常捕获全局处理,生成错误日志_第1张图片

你可能感兴趣的:(asp.net 程序异常捕获全局处理,生成错误日志)