异常捕获和log4net使用

本文详细介绍了在ASP.NET MVC应用中通过自定义异常捕获过滤器和使用log4net进行日志记录的方法,包括如何在全局配置中注册过滤器、设置log4net配置、以及在代码中正确地写入日志信息,特别强调了并发问题的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

捕获异常

1.webform的golbal中有一个事件专门捕获异常
2.asp.net mvc中使用filter(asp.net mvc自带)过滤器捕获异常,具体方法如下
2.1自定义异常捕获过滤器,使之继承HandleErrorAttribute(filter中的异常过滤器),并重写OnException方法
public class MyHandleErrorAttribute:HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);


//异常处理记录,即写日志,并发(多个线程同时往一个文件中写东西,会报错)处理在LogHelper中实现       
LogHelper.WriteLog(filterContext.Exception.StackTrace);


//跳转到错误页面
filterContext.HttpContext.Response.Redirect("~/Error.html");
}
}
2.2注册自定义的过滤器
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
filters.Add(new MyHandleErrorAttribute());
}
}
找到该类的方法:找到Global中Application_Start方法中的FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters),右击转到定义

log4net使用

1.引入dll
2.在config文件中配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
</configuration>
<log4net>
    <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
    <!-- Set root logger level to ERROR and its appenders -->
    <root>
      <level value="ERROR"/>
      <appender-ref ref="SysAppender"/>
    </root>


    <!-- Print only messages of level DEBUG or above in the packages -->
    <logger name="WebLogger">
      <level value="ERROR"/>
    </logger>

<!-- 该appender节意思为以文本的方式记录日志文件 -->
    <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net" >
      <param name="File" value="App_Data/" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
        <param name="Header" value="&#13;&#10;----------------------header--------------------------&#13;&#10;" />
        <param name="Footer" value="&#13;&#10;----------------------footer--------------------------&#13;&#10;" />
      </layout>
    </appender>
    <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>
  </log4net>
3.初始化
  在global文件的Application_Start方法中添加以下代码
  log4net.Config.XmlConfigurator.Configure();//读取了配置文件中关于Log4Net配置信息.
4.写日志
  在需要写日志的地方加入(需要处理并发问题,具体见LogHelper.cs)
  ILog log = LogManager.GetLogger("MyLog");//MyLog只是日志的名字

  log.Error(filterContext);//ex.ToString()


LogHelper.cs下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值