完整的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>

Manual write code to record error log in .net by Global.asax的更多相关文章

  1. MS SQL错误:SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems

          早晨宁波那边的IT人员打电话告知数据库无法访问了.其实我在早晨也发现Ignite监控下的宁波的数据库服务器出现了异常,但是当时正在检查查看其它服务器发过来的各类邮件,还没等到我去确认具体情 ...

  2. [AS3.0] Error #2044: 未处理的 NetStatusEvent:。 level=error, code=NetStream.Record.NoAcces 解决办法

    突然又需要FMS做视频录制,却遇到一些意想不到的问题,我在想当年做的时候怎么没遇到... 报错: Error #2044: 未处理的 NetStatusEvent:. level=error, cod ...

  3. Eclipse:An error has occurred. See error log for more details. java.lang.NullPointerException

    问题描述   在使用 Eclipse Clean 项目时报错:An error has occurred. See error log for more details. java.lang.Null ...

  4. 使用PHPMailer 中的报错解决 "Connection failed. Error #2: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:"

    PHPMailer项目地址:https://github.com/PHPMailer/PHPMailer 项目中用到PHPMailer,使用过程中报错:"Connection failed. ...

  5. Trace & Error log in file

    1. Log机制 做一些大型项目的时候,对代码的调试最有效的办法往往是最直接.最简单的log机制: 即对可以出设置打印店,对应打印信息进行调试(当然是有gdb也许你会觉得很高大上,但是实际项目中,gd ...

  6. 解决MyEclipe出现An error has occurred,See error log for more details的错误

    今晚在卸载MyEclipse时出现An error has occurred,See error log for more details的错误,打开相应路径下的文件查看得如下: !SESSION 2 ...

  7. MySQL5.7 error log时间显示问题

    最近有两三套环境升级到了5.7.16,发现mysql.err中的时间好像有些问题,经查是mysql 5.7后的变更,如下: root@localhost [(none)]>select now( ...

  8. MYSQL 5.7 无法启动(Could not open error log file errno 2)

    前两天电脑中毒, 病毒好像把mysql的 log.err 文件给删掉了.然后服务一直启动不了:Could not open error log file errno 2. 然后疯狂百度,搜索的结果大多 ...

  9. mariadb:InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes

    mariadb 启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 起因:线上正在运行的系统,因为需要调整性能,变更了my ...

随机推荐

  1. Spring Boot Web 开发注解篇

    本文提纲 1. spring-boot-starter-web 依赖概述 1.1 spring-boot-starter-web 职责 1.2 spring-boot-starter-web 依赖关系 ...

  2. SLAM+语音机器人DIY系列:(三)感知与大脑——3.轮式里程计与运动控制

    摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

  3. python类属性用法总结

    属性的定义:python中的属性其实是普通方法的衍生. 操作类属性有三种方法: 1.使用@property装饰器操作类属性. 2.使用类或实例直接操作类属性(例如:obj.name,obj.age=1 ...

  4. CentOS 7.4 下 如何部署 AspNetCore 结合 consul

    上篇我们讲到consul的概念,以及在WIN下如何使用:http://www.cnblogs.com/szlblog/p/9162557.html 步骤如下: 1.安装虚拟机VM 2.下载安装 Cen ...

  5. java基础(三):谈谈java异常的处理

    1.知识点总结 1.1.异常分类 异常就是java中出现的不正常的现象(错误与异常),按照继承的体系结构,可以分类如下 Throwable: 它是所有错误与异常的超类(祖宗类) |- Error 错误 ...

  6. C# 利用位运算传递多个参数方法

    前言 在工作中用sendMessage的方法向另外一个进程中传递窗体的位置,长度,宽度四个值,但是sendMessage的方法签名中只有两个参数.于是在网上找到了一些代码,找到了这个利用位运算来合并参 ...

  7. Android Monkey压力测试使用

    一.Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击.滑动.Application切换.横竖屏.应用关闭)实现对 ...

  8. (办公)工作中的编码不良习惯Java(不定时更新)

    1.别瞎写,方法里能用封装好的类,就别自己写HashMap. 2.方法名,整的方法名都是啥?退出close,用out. 3.git提交版本,自己写的代码,注释,提交版本的时候,一定要清理掉.每个判断能 ...

  9. github在README.md中插入图片

    例子 ![image](https://raw.githubusercontent.com/sunday123/Pendant/master/1.PNG)

  10. Redis基础一(Linux)

    Redis概述 1.是一个开源的,先进的<key,value>存储,并用与构建高性能,可扩展的应用程序的完美解决方案 2.从它的许多竞争继承来的三个主要特点: l  Redis数据库完全在 ...