您的位置:首页 > 编程语言 > ASP

ASP.NET MVC利用log4net记录错误日志信息的简单运用

2018-10-08 10:11 696 查看

1、在NuGet中下载log4net包

2、在配置文件中配置以下代码:

[code]<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<!--日志记录组建配置-->
<log4net>
<!--定义输出到文件中-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file value="Logs\\Tracer\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value="100"/>
<layout type="log4net.Layout.PatternLayout">
<!--每条日志末尾的文字说明-->
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="%n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="INFO" />
</filter>
</appender>

<!--定义输出到文件中-->
<appender name="RollingFileTracer" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file value="Logs\\Error\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value="100"/>
<layout type="log4net.Layout.PatternLayout">
<!--每条日志末尾的文字说明-->
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="%n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>

<root>
<level value="ALL"/>
<!--文件形式记录日志-->
<appender-ref ref="RollingLogFileAppender"/>
<appender-ref ref="RollingFileTracer"/>
</root>
</log4net>
</configuration>

也可以单独创建一个config来放log4net的配置文件,可以避免Web.config压力过大

  配置代码可前面代码相同

3、在Properties->AssemblyInfo中添加如下代码,来读取配置文件

自己添加的config添加代码如下:

[code][assembly: log4net.Config.XmlConfigurator(ConfigFile = @"Config\log4net.config", Watch =true)]

配置代码写在Web.config中如下:

[code][assembly: log4net.Config.XmlConfigurator(ConfigFile = @"Web.config", Watch =true)]

4、定义一个友好的错误页面

页面自己定义!

5、封装ExceptionControl方法,异常处理过滤器,使用log4net记录日志,并跳转至错误页面 引入using log4net;

继承HandleErrorAttribute接口  引入命名空间using System.Web.Mvc;

[code]/// <summary>
/// 异常处理过滤器,使用log4net记录日志,并跳转至错误页面
/// </summary>
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class ExceptionControl : HandleErrorAttribute
{
ILog log = LogManager.GetLogger(typeof(ExceptionControl));

public override void OnException(ExceptionContext filterContext)
{
if (!filterContext.ExceptionHandled)
{
string message = string.Format("消息类型:{0}\r\n消息内容:{1}\r\n引发异常的方法:{2}\r\n引发异常源:{3}"
, filterContext.Exception.GetType().Name
, filterContext.Exception.Message
, filterContext.Exception.TargetSite
, filterContext.Exception.Source + filterContext.Exception.StackTrace
);

//记录日志
log.Error(message);
//转向
filterContext.ExceptionHandled = true;
filterContext.Result = new RedirectResult("~/Error.html");//跳转错误页,地址根据自己的改
}
base.OnException(filterContext);
}
}

 6、在App_Start中创建FilterConfig.cs类,定义RegisterGlobalFilters方法,添加如下代码:

注:记得引入你上个方法定义的位置

引入命名空间

using System.Web.Mvc;
using MVCPractice.UI.Web.Filter;

[code]public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ExceptionControl());
}

 

7、配置Global.asax ->Application_Start 如下:

[code]FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

 

 

log4net可以记录网页爆红,请求编译不通过的错误,错误记录样例如下:

为程序员的后期维护提供了极大的便利! 

 

新人博客,不足之处还请多多指出,谢谢!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: