zoukankan      html  css  js  c++  java
  • ASP.NET MVC5 之 Log4Net 的学习和使用

    最近在学习 log4Net 插件,在博客园找到了好多资料,但是实现起来还是有点麻烦。

    现在记录下学习的过程,期间可能加载着借鉴和转载的代码。

    1.配置文件的设置:

    新建config文件夹下 log4net.config文件,代码如下:

    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
      </configSections>
      <!--Log4net Begin by Tony  2008.11.20-->
      <log4net>
        <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
          <!--示是记录10 条到缓冲区,满10条后再写入SQL server-->
          <bufferSize value="1" />
          <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <connectionString value="DATABASE=Log4Net;SERVER=.;UID=sauser;PWD=sqlPassword123_;Connect Timeout=15;" />
          <commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
          <parameter>
            <parameterName value="@log_date" />
            <dbType value="DateTime" />
            <layout type="log4net.Layout.RawTimeStampLayout" />
          </parameter>
          <parameter>
            <parameterName value="@thread" />
            <dbType value="String" />
            <size value="100" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%t" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@log_level" />
            <dbType value="String" />
            <size value="200" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%p" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@logger" />
            <dbType value="String" />
            <size value="500" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%logger" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@message" />
            <dbType value="String" />
            <size value="3000" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%m" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@exception" />
            <dbType value="String" />
            <size value="4000" />
            <layout type="log4net.Layout.ExceptionLayout" />
          </parameter>
        </appender>
        <!-- setup the root category, add the appenders and set the default level -->
        <root>
          <level value="WARN"/>
          <level value="INFO"/>
          <level value="DEBUG"/>
          <level value="FINE"/>
          <appender-ref ref="ADONetAppender" />
        </root>
        <!-- specify the level for some specific categories -->
        <logger name="iNotes">
          <level value="WARN"/>
          <level value="INFO"/>
          <level value="DEBUG"/>
          <level value="FINE"/>
          <appender-ref ref="ADONetAppender"/>
        </logger>
        <logger name="StellaLogger">
          <level value="ALL"/>
          <appender-ref ref="AdoNetAppender" />
        </logger>
      </log4net>
      <!--Log4net End-->
    </configuration>

    2.数据库Sql语句

    USE [Log4Net] GO

    SET QUOTED_IDENTIFIER ON GO

    SET ANSI_PADDING ON GO

    CREATE TABLE [dbo].[ErrorLog](

     [nId] [bigint] IDENTITY(1,1) NOT NULL,

     [dtDate] [datetime] NOT NULL,

     [sThread] [varchar](100) NOT NULL,  

    [sLevel] [varchar](200) NOT NULL,

     [sLogger] [varchar](500) NOT NULL,  

    [sMessage] [varchar](3000) NOT NULL,

     [sException] [varchar](4000) NULL ) ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF GO

    3.AssemblyInfo.cs 文件

    添加

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

    4.FilterConfig.cs

      public static void RegisterGlobalFilters(GlobalFilterCollection filters)        

    {            

               filters.Add(new HandleErrorAttribute());                       

                 //注册错误过滤器            

                 filters.Add(new MyDealExceptionFileAttribute());

    }

    5.新建MyLogHelper.cs 文件

      public class MyLogHelper    

      {        

           public static void WriteLog(string txt)      

          {            

                  ILog log = LogManager.GetLogger("log4netlogger");       

                  log.Error(txt);

            }

        }

    6.新建MyDealExceptionFileAttribute .cs

        public class MyDealExceptionFileAttribute : HandleErrorAttribute  

       {        

                public override void OnException(ExceptionContext filterContext)        

                {          

                        base.OnException(filterContext);             //处理错误消息,将其跳转到一个页面           

                       MyLogHelper.WriteLog(filterContext.Exception.ToString());             //页面跳转到错误页面                               

                      filterContext.HttpContext.Response.Redirect("/Error.html");       

                }

       }

    6.HomeController.cs 控制器下代码

          public ActionResult Index()
            {
                try
                {
                    int a = 0;
                    int b2 = 1;
                    int c = b2 / a;
                }
                catch (Exception ex)
                {
                    log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                     myLogger.Error("错误的测试", ex);  
                }
                return View();
            }

    7.Global.asax  文件配置

      log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("config\log4net.config"));

    借鉴URL:

    http://kb.cnblogs.com/page/76919/

    http://www.cnblogs.com/huanghai223/archive/2012/02/21/2361529.html

    http://myx.cnblogs.com/iaxes/articles/Log4net.html

  • 相关阅读:
    圆圈中最后剩下的数字
    扑克牌的顺子
    n个骰子的点数
    翻转单词顺序和左旋转字符串
    和为s的两个数字 和为s的连续正数序列
    LINUX学习(1)
    社交分享(facebook分享、twitter分享、link分享、google分享)
    获得HttpWebResponse请求的详细错误内容
    获得用户IP、城市、国家等信息的api接口
    win10彻底关闭自动更新
  • 原文地址:https://www.cnblogs.com/hanxingli/p/5333068.html
Copyright © 2011-2022 走看看