zoukankan      html  css  js  c++  java
  • 使用Global.asax在ASP.NET中记录错误日志

    完整的Glabal.asax代码:

    <%@ Application Language="C#" %>

    <script RunAt="server">

        void Application_Start(object sender, EventArgs e)
        {
            // 在应用程序启动时运行的代码

        }

        void Application_End(object sender, EventArgs e)
        {
            // 在应用程序关闭时运行的代码

        }

        void Application_Error(object sender, EventArgs e)
        {
            // 在出现未处理的错误时运行的代码
            Exception objErr = Server.GetLastError().GetBaseException();
            string error = string.Empty;
            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() + "<br>";
            errortime = "发生时间:" + System.DateTime.Now.ToString();

            error += "发生异常页: " + Request.Url.ToString() + "<br>";
            erroraddr = "发生异常页: " + Request.Url.ToString();

            error += "异常信息: " + objErr.Message + "<br>";
            errorinfo = "异常信息: " + objErr.Message;
            //error +="错误源:"+objErr.Source+"<br>";
            //error += "堆栈信息:" + objErr.StackTrace + "<br>";
            errorsource = "错误源:" + objErr.Source;
            errortrace = "堆栈信息:" + objErr.StackTrace;
            error += "--------------------------------------<br>";
            Server.ClearError();
            Application["error"] = error;
            //独占方式,因为文件只能由一个进程写入.
            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 = DateTime.Now.Day.ToString() + ".txt";
                    path = Server.MapPath("~/Error/") + year + "/" + month;
                    //如果目录不存在则创建
                    if (!System.IO.Directory.Exists(path))
                    {
                        System.IO.Directory.CreateDirectory(path);
                    }
                    System.IO.FileInfo file = new System.IO.FileInfo(path + "/" + filename);
                    //if (!file.Exists)
                    //    file.Create();
                    //file.Open(System.IO.FileMode.Append);        
                    writer = new System.IO.StreamWriter(file.FullName, true);//文件不存在就创建,true表示追加
                    writer.WriteLine("用户IP:" + Request.UserHostAddress);
                   // if (Session["Identity"] != null)
                   // {
                   //     writer.WriteLine("登录帐号:" System.Web.HttpContext.Current.Session["Identity"]).YongHuInfo.ACCOUNTID);
                   // }
                    writer.WriteLine(errortime);
                    writer.WriteLine(erroraddr);
                    writer.WriteLine(errorinfo);
                    writer.WriteLine(errorsource);
                    writer.WriteLine(errortrace);
                    writer.WriteLine("【this Error From http://hi.baidu.com/yanwei99521】");
                    writer.WriteLine("--------------------------------------------------------------------------------------");
                }
            }
            finally
            {
                if (writer != null)
                    writer.Close();

            }
            Response.Redirect("~/ErrorPageByPurview.aspx?ErrorCode=004");
        }

        void Session_Start(object sender, EventArgs e)
        {
            // 在新会话启动时运行的代码

        }

        void Session_End(object sender, EventArgs e)
        {
            // 在会话结束时运行的代码。 
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
            // 或 SQLServer,则不会引发该事件。

        }
           
    </script>

  • 相关阅读:
    CodeIgniter控制器
    CodeIgniter URL添加后缀
    CodeIgniter 用户指南 基础教程 摘要
    微信公众平台搭建与开发
    星座与性格
    CodeIgniter学习笔记(十六)——CI中的验证码
    PHP 捕捉错误,记录到日志
    js写的闹钟,支持多个闹钟
    列王的纷争,COK,675区,有去的没有?加群:159108918,盟的名字准备叫:大话西游
    下载一个指定文件,下载成功后修改权限,自动重试60次,带详细日志记录。
  • 原文地址:https://www.cnblogs.com/weixing/p/3043036.html
Copyright © 2011-2022 走看看