MVC使用Log4Net进行错误日志记录学习笔记4

2019-05-22 09:10:46王振洲

 在Global文件中的Application_Start方法中开启一个线程,用于将队列中的错误信息写入日志文件。

using System.Linq;
using System.Threading;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using log4net;
using PMS.WebApp.Models;
using Spring.Web.Mvc;

namespace PMS.WebApp
{
  // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
  // 请访问 http://go.microsoft.com/?LinkId=9394801

  public class MvcApplication : SpringMvcApplication//HttpApplication
  {
    protected void Application_Start()
    {
      log4net.Config.XmlConfigurator.Configure();//读取Log4Net配置信息
      AreaRegistration.RegisterAllAreas();

      WebApiConfig.Register(GlobalConfiguration.Configuration);
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
      RouteConfig.RegisterRoutes(RouteTable.Routes);
      BundleConfig.RegisterBundles(BundleTable.Bundles);

      //开启一个线程,扫描异常信息队列.
      var filePath = Server.MapPath("/Log/");
      ThreadPool.QueueUserWorkItem((a) =>
      {
        while (true)
        {
          //判断队列中是否有数据
          if (Log4ExceptionAttribute.Exceptions.Any())
          {
            //出队一条异常信息
            var ex = Log4ExceptionAttribute.Exceptions.Dequeue();
            //若异常信息不为空
            if (ex == null) continue;
            //将异常信息写入到日志文件中
            var logger = LogManager.GetLogger("errorMsg");
            logger.Error(ex.ToString());
          }
          else
          {
            //若异常信息队列为空,则线程休息三秒
            Thread.Sleep(3000);
          }
        }
      }, filePath);
    }
  }
}

 成功完成错误日志的配置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。