第一步:在Global.asax文件下的Application_Error()中写入操作日志

  1. /// <summary>
  2. /// 整个网站出现异常信息,都会执行此方法
  3. /// </summary>
  4. /// <param name="sender"></param>
  5. /// <param name="e"></param>
  6. protected void Application_Error(object sender, EventArgs e)
  7. {
  8. if (string.IsNullOrEmpty(Common.LogHelper.LogBasePath)) //文件的绝对物理路径
  9. {
  10. Common.LogHelper.LogBasePath = Request.MapPath("/Log");
  11. }
  12. //往错误消息的队列里面写一个错误消息
  13. Common.LogHelper.ExcpetionInfoQueue.Enqueue(Server.GetLastError().ToString());
  14. //整个网站出现了未捕获的异常,一般就是跳转到一个错误页面
  15. //提醒错误,然后隔几秒跳回首页
  16. Response.Redirect("/WebForm1.aspx");
  17.  
  18. }

  第二步:日志操作文件类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text;
  5. using System.Threading;
  6. using System.Web;
  7.  
  8. namespace Common
  9. {
  10. /// <summary>
  11. /// 日志文件操作类
  12. /// </summary>
  13. public class LogHelper
  14. {
  15. public static string LogBasePath; //物理绝对路径
  16. public static Queue<string> ExcpetionInfoQueue = new Queue<string>(); //日志消息队列
  17. static LogHelper()
  18. {
  19. ThreadPool.QueueUserWorkItem(o =>
  20. {
  21. while (true)
  22. {
  23. lock (ExcpetionInfoQueue)
  24. {
  25. if (ExcpetionInfoQueue.Count > )
  26. {
  27. //写入错误消息
  28. string strFileName = DateTime.Now.ToString(@"yyyy-MM-dd") + ".txt";
  29. string absoluteFileName = Path.Combine(LogBasePath,strFileName);
  30. using (FileStream fs = new FileStream(absoluteFileName, FileMode.Append, FileAccess.Write))
  31. {
  32. string strError = ExcpetionInfoQueue.Dequeue(); //错误消息
  33. byte[] buffer = Encoding.Default.GetBytes(strError);
  34. fs.Write(buffer, , buffer.Length);
  35. }
  36. }
  37. }
  38. }
  39. });
  40. }
  41. }
  42. }

  后续还会更新用log4Net记录报错日志消息

.Net捕获网站异常信息记录操作日志的更多相关文章

  1. asp.net core全局异常过滤并监控系统BUG将异常信息记录到日志

    添加: using Dw.Util.Helper; using Microsoft.AspNetCore.Mvc.Filters; using System; using System.Collect ...

  2. 使用SpringBoot AOP 记录操作日志、异常日志

    平时我们在做项目时经常需要对一些重要功能操作记录日志,方便以后跟踪是谁在操作此功能:我们在操作某些功能时也有可能会发生异常,但是每次发生异常要定位原因我们都要到服务器去查询日志才能找到,而且也不能对发 ...

  3. Java并发-UncaughtExceptionHandler捕获线程异常信息并重新启动线程

    Java并发-UncaughtExceptionHandler捕获线程异常信息并重新启动线程 一.捕获异常并重新启用线程 public class Testun { public static voi ...

  4. Tomcat会话超时时怎样记录操作日志,满足安全审计要求

    众所周知.在实际的Web应用程序中,会话管理一般都採用Web容器会话管理功能. 使用Tomcat做Webserver也是如此,并且从安全的角度考虑,尽量避免去更改和干预Web容器的会话管理功能. To ...

  5. Appfuse:记录操作日志

    appfuse的数据维护操作都发生在***form页面,与之对应的是***FormController,在Controller中处理数据的操作是onSubmit方法,既然所有的操作都通过onSubmi ...

  6. MVC 记录操作日志与过滤特殊字符

    最近进行的MVC系统需要用到记录操作日志和过滤特殊字符的功能,如果每个action中都调用记录日志的方法就太麻烦了,所以根据需要结合mvc的过滤机制 写了个特殊字符验证与记录操作日志的公用类: pub ...

  7. Linux中生成Core Dump系统异常信息记录文件的教程

    Linux中生成Core Dump系统异常信息记录文件的教程 http://www.jb51.net/LINUXjishu/473351.html

  8. C#将异常信息添加到日志

    C#将程序抛出的异常信息添加到错误日志 错误日志是软件用来记录运行时出错信息的文本文件.编程人员和维护人员等可以利用错误日志对系统进行调试和维护. 为程序添加错误日志的好处是当程序有运行错误时,根据错 ...

  9. spring-boot-route(十七)使用aop记录操作日志

    在上一章内容中--使用logback管理日志,我们详细讲述了如何将日志生成文件进行存储.但是在实际开发中,使用文件存储日志用来快速查询问题并不是最方便的,一个优秀系统除了日志文件还需要将操作日志进行持 ...

随机推荐

  1. Java垃圾收集器——Parallel、G1收集器日志分析及性能调优示范

    开发过程中,经常需要对GC的垃圾收集器参数不断的进行动态调整,从而更充分的压榨机器性能,提升应用效率.本文将从常见的Parallel/G1垃圾收集器的GC日志着手,分析GC日志的具体含义,以及示范如何 ...

  2. 『007』MySQL

    『005』索引-Database MySQL [001]- 点我快速打开文章[第一章 MySQL 大纲介绍] [002]- 点我快速打开文章[第二章 MySQL 介绍和安装] 更新中

  3. CodeForces - 1250L(思维+贪心)

    题意 https://vjudge.net/problem/CodeForces-1250L 有三类人,a,b,c,现在要把这些人分成三个组,a和c类的不能在同一组,问分组后三组的最大的人数的最小值是 ...

  4. Java JDK 运行环境安装

    1 Windows系统 1.1 安装包准备 安装包本文档讲解为64位系统,如果是32位系统需要下载32位系统安装包 1.1.1 下载方式 打开jdk官方下载地址,该文档提供jdk版本为1.8 http ...

  5. 7.Java基础_Java数据输入

    import java.util.Scanner; public class Output { public static void main(String[] args){ Scanner sc=n ...

  6. luoguP3258 [JLOI2014]松鼠的新家

    树上差分 树上差分分析 使点x到点y的路径上(链上),全加上一个值,可以选择使用树上差分(不用线段树乱搞.... 首先,和普通的差分一样,要有一个tag.然而,对于一个结点,我们需要求出它全部儿子的t ...

  7. Linux学习(五)远程登录

    Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ssh服务实现的远程登录功 ...

  8. 报错Error resolving template template might not exist or might not be accessible解决方案

    "C:\Program Files\Java\jdk1.8.0_144\bin\java" "-javaagent:D:\IntelliJ IDEA Community ...

  9. C++ class内的=重载,拷贝赋值函数copy op=,重载示例。必须是class内

    #include <iostream> // overloading "operator = " inside class // = 是一元操作符.不写,编译器会提供 ...

  10. [题解向] CF#536Div2の题解 E&F

    \(0x01~~Preface\) \(emmm\)这次CF本身打的很顺畅,但是居然unrated了--咕咕咕咕 这是头一次CF有比赛我全部题目都做了--可喜可贺可喜可贺233 简单总结一下前面四道题 ...