asp.net mvc中加入log4net记录错误日志

首先添加加log4net的dll,推荐用nuget....

贴上配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4Net" />
  </configSections>
  <!--日志的配置开始-->
  <log4net debug="true">
    <root>
      <level value="ALL" />
      <appender-ref ref="SysAppender" />
      <appender-ref ref="AdoNetAppender" />
    </root>

    <logger name="WebLogger">
      <!--配置日志的级别,低于此级别的就不写到日志里面去-->
      <level value="DEBUG" />
    </logger>

    <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;.htm&quot;" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
        <!--<conversionPattern value="%newline %n记录时间:%date %newline %n 线程ID:[%thread] %n日志级别:  %-5level %n跟踪描述:%message%newline %n"/>-->
      </layout>
    </appender>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1" />
      <connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
      <connectionString value="server=localhost;port=3306;database=jianzheng;uid=root;pwd=svse;" />
      <commandText value="INSERT INTO `TestSysLog` (`Date`, `Thread`, `Level`, `Logger`, `Method`, `Location`,`Message`, `Exception`) VALUES (@Date, @Thread, @Level, @Logger, @Method,@Location,@Message, @Exception)" />
      <parameter>
        <parameterName value="@Date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
      <parameter>
        <parameterName value="@Thread" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@Level" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@Logger" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@Method" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%method" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@Location" />
        <dbType value="String" />
        <size value="1023" />
        <layout type="log4net.Layout.PatternLayout" >
          <conversionPattern value="%location" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@Message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@Exception" />
        <dbType value="String" />
        <size value="8000" />
        <layout type="log4net.Layout.ExceptionLayout" />
      </parameter>
    </appender>
  </log4net>
  <!--日志的配置结束-->

</configuration>本demo里是新建的一个xml文件。在网站根目录新建如图:把xml配置内容copy进去,在Global.asax的Application_Start()中加入下面的一句 //读取日志  如果使用log4net,应用程序一开始的时候,都要进行初始化配置 log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("config\\log4net.config"));在AssemblyInfo.cs里加入[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config\\log4net.config", Watch = false)]
AssemblyInfo.cs的位置在如图:

然后添加一个过滤器
 public class MyExceptionFileAttribute : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);
            //处理错误消息,将其跳转到一个页面
            LogHelper.WriteLog(filterContext.Exception.ToString());
            //页面跳转到错误页面
            filterContext.HttpContext.Response.Redirect("/Error.html");
        }
    }

还要建一个工具类,用来写日志。

 public class LogHelper
    {
        public static void WriteLog(string txt)
        {
            ILog log = LogManager.GetLogger("log4netlogger");
            log.Error(txt);

        }
    }

最后还要在

FilterConfig.cs中加入全局过滤器 //注册错误过滤器  public static void RegisterGlobalFilters(GlobalFilterCollection filters)        {            filters.Add(new HandleErrorAttribute());            //注册错误过滤器            filters.Add(new MyExceptionFileAttribute());        }默认把错误日志存在app_data中,为htm文件。存到mysql数据库中了数据库结构如图:

时间: 2024-08-04 12:24:37

asp.net mvc中加入log4net记录错误日志的相关文章

ASP.NET MVC中Log4Net记录错误日志的使用

第一.在管理NuGet程序包 =>下载 Log4Net 第二.在web.config配置Log4Net 1:在<configuration>节点下 <configSections>节点中 配置log4Net节点引用. <!--log4net日志记录--> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net

MVC 中使用log4net 打印重复日志解决方法

最近在项目中引用log4net 来打印日志,会发现在同一时间点 打印重复记录: 详见图 其实,解决这个问题挺简单的就是太配置文件上logger 标签上添加一个additivity="false"属性就好了:完美解决.

asp.net Web项目中使用Log4Net进行错误日志记录

使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能改变应用的日志行为,使得用户可以根据情况灵活地选择要记录的信息. 那么我们如何在Web项目中使用Log4Net呢? 一.基本配置 1.下载Log4Net,地址如下:http://logging.apache.org/log4net/download_log4net.cgi,如下图所示: 2.下载到本地后

asp.net 页面中引用log4net,添加日志操作

最近在一个项目中使用到了log4net.dll用于记录操作日志,从网上找的大部分资料都是在每个需要输出日志的类中都先声明一下,然后再调用它的输出函数,如debug,error等等 如果是一个小的项目,这样比较简单,使用起来很容易,但是如果项目涉及多个解决方案,比如我现在的贸易系统项目,每天的流水会达到几个亿,会涉及多个操作类型,因此就需要有详细的日志记录信息, 如果还用以前的方式会比较麻烦,因此就按照项目需要,单独创建一个dll用于实现记录日志. 1.下载一个log4net.dll 2.创建一个

ASP.NET MVC学习之Log4Net配置(日志记录)

Log4Net配置笔记---- 首先,添加对log4net.dll的引用. 在Web.config文件下的Configuration节点下添加Log4Net的配置信息: 1 <!--Log4Net配置节点--> 2 <configSections> 3 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

ASP.NET MVC中错误日志信息记录

MVC中有一个处理异常的过滤器 HandleErrorAttribute 1.新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法 public class MyExceptionAttribute:HandleErrorAttribute { /// <summary> /// 可捕获异常数据 /// </summary> /// <param name="filterContext"></par

【转】ASP.NET MVC中错误日志信息记录

MVC中有一个处理异常的过滤器 HandleErrorAttribute 1.新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法 public class MyExceptionAttribute:HandleErrorAttribute { /// <summary> /// 可捕获异常数据 /// </summary> /// <param name="filterContext"></par

log4net 使用总结- (2)在ASP.NET MVC 中使用

log4net在ASP.NET MVC中的配置,还有一种配置方式,即不在web.config中,而是单独新建一个log4net.config 在根目录下 第一.引用log4net.dll 第二.在站点根目录下增加log4net.config <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="

asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法

在asp.net MVC中使用Html.CheckBox提交后出现该字符串未被识别为有效的布尔值错误,或从类型“System.String”到类型“System.Boolean”的参数转换失败. 错误例子:@Html.CheckBox("UserID",item.IsTrue,new{value=item.UserID}) 这是由于MVC会在页面上生成<input id="UserID" name="UserID" value="