using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace 分布式日志
{
    public class MyExceptionFilter : HandleErrorAttribute
    {
        public static Queue<Exception> listQueue = new Queue<Exception>();
        public override void OnException(ExceptionContext filterContext)
        {
            if (filterContext.Exception!=null)
            {
                listQueue.Enqueue(filterContext.Exception);
                filterContext.HttpContext.Response.Redirect("/error.html");
            }
            base.OnException(filterContext);
        }
    }
}
using System.Web;
using System.Web.Mvc;

namespace 分布式日志
{
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            //filters.Add(new HandleErrorAttribute());
            filters.Add(new MyExceptionFilter());
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace 分布式日志
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //通过线程池开启一个线程,然后不停的从队列中读取数据
            string strRoot = Server.MapPath("/Log/");
            string strPath = strRoot + DateTime.Now.ToString("yyyy-MM-dd").ToString()+".txt";
            ThreadPool.QueueUserWorkItem(i =>
            {
                while (true)
                {
                    try
                    {
                        if (MyExceptionFilter.listQueue.Count > 0)
                        {
                            Exception ex = MyExceptionFilter.listQueue.Dequeue();
                            if (ex != null)
                            {
                                System.IO.File.AppendAllText( strPath,DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ex.ToString() + Environment.NewLine,System.Text.Encoding.UTF8);
                            }
                            else
                            {
                                Thread.Sleep(30);
                            }
                        }
                        else
                        {
                            Thread.Sleep(30);//避免cpu空转
                        }
                    }
                    catch(Exception ex)
                    {
                        MyExceptionFilter.listQueue.Enqueue(ex);
                    }
                }
            }, strPath);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace 分布式日志.Controllers
{
    public class TestController : Controller
    {
        //
        // GET: /Test/
        public ActionResult Index()
        {
            int aa = Convert.ToInt32("sss");
            return View();
        }
    }
}

  

  

最新文章

  1. GNURadio 使用问题
  2. java基础知识(一)数据类型(上)
  3. RocketMQ与kafka对比(18项差异)-转自阿里中间件
  4. python学习之——安装Beautifulsoup、requests、lxml
  5. 深入理解javascript函数系列第一篇——函数概述
  6. CSRF攻击原理以及防御
  7. 将32位MD5摘要串转换为128位二进制字符串
  8. C++STL之map的基本操作
  9. (转)iOS Wow体验 - 第二章 - iOS用户体验解析(2)
  10. 快速构建Windows 8风格应用21-构建简单媒体播放器
  11. 0-创建scott示例数据
  12. haslib 模块
  13. JEECG 新版在线文档WIKI正式发布
  14. 使用多线程提高Rest服务性能
  15. springboot shiro开启注释
  16. TF-IDF原理
  17. iOS10 打开APP设置界面和WIFI界面
  18. WizNote分享笔记至博客
  19. OtterTune来了,DBA怎么办
  20. JavaSE(八)之Collection总结

热门文章

  1. php操作文件及下载图片脚本
  2. php把错误日志输入到文件里。
  3. devexpress中如何给TabPage控件的Tab定义背景色
  4. MessageFormat不支持{
  5. Python之路【第十七篇】:Django【进阶篇 】
  6. Ubuntu14.04安装MySQL-python异常: mysql_config: not found,Command &quot;python setup.py egg_info&quot; failed with error code 1 in /tmp/pip-build-MJWMPd/MySQL-python/
  7. WEB服务器、应用程序服务器、HTTP服务器区别
  8. 127.0.0.1和localhost完全相等吗?
  9. tableview的顶部有一部分空白区域,并不是Cell的解决方法。
  10. 种类并查集(POJ 1703)