Log4Net日誌配置 ASP.NET 配置log4net啓用寫錯誤日誌功能

1.添加Log4net.dll引用html

將release版Log4net.dll拷貝到Lib文件夾,而後添加引用。數據庫

 

2.在Web.Config(或App.Config)添加配置。app

 (1)在configSections節點下添加配置:ide

<!--Log4Net配置-->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

 (2)在configuration節點下添加配置:post

 <!--log4net配置(專業配置,推薦)-->
  <log4net>
    <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
    <!-- Set root logger level to ERROR and its appenders -->
    <root>
      <level value="WARN"/>
      <appender-ref ref="SysAppender"/>
    </root>

    <!-- Print only messages of level DEBUG or above in the packages -->
    <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;.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>
  <!--log4net配置結束-->

配置信息說明:測試

Appender:能夠將日誌輸出到不一樣的地方,不一樣的輸出模板對應不一樣的Appender:url

RollingFileAppender(滾動文件)、AdoNetAppender(數據庫)、SmtpAppender(郵件)等。spa

 

Level(級別):標識這條日誌信息的重要級別。None>Fatal>ERROR>WARN>DEBUG>INFO>ALL,設定一個Level,那麼低於這個Level的日誌是不會被寫到Appender中的。線程

 

Log4Net還能夠設定多個Appender,能夠實現同時將日誌記錄到文件、數據、發送郵件等;能夠設定不一樣的Appender的Level,能夠實現普通級別都記錄到文件。Error以上級別發送郵件。能夠實現對不一樣的類設定不一樣的Appender;還能夠自定義Appender,這樣能夠本身實現將Error信息發短信等。日誌

 

除了Log4Net,還有Enterprise Library中的Logging Application Block、Apache的CommonLog以及NLog等,都差很少。

 

最基本簡單的配置,不推薦

 <!--log4net配置(最基本簡單的配置,不推薦)-->
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="test.txt"/>
      <appendToFile value="true"/> --><!--追加--><!--
      <maxSizeRollBackups value="10"/> --><!--備份數量--><!--
      <maximumFileSize value="1024KB"/>
      <rollingStyle value="Size"/>
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>
  <!--log4net配置結束-->
View Code

 

3.在Global文件Application_Start方法下,程序最開始進行初始化。

using log4net;
using Spring.Web.Mvc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using WebApp.Models;

namespace WebApp
{
    // 注意: 有關啓用 IIS6 或 IIS7 經典模式的說明,
    // 請訪問 http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : SpringMvcApplication //System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            log4net.Config.XmlConfigurator.Configure();//讀取Log4Net配置信息

            #region 開啓線程掃描異隊列,處理異常信息
            //string fileLogPath = Server.MapPath("/Log/");//知道用來保存錯誤日誌文件的文件夾路徑
            //開啓一個線程掃描日誌隊列
            ThreadPool.UnsafeQueueUserWorkItem((a) =>
            {
                while (true)
                {
                    if (MyExceptionAttribute.exceptionQueue.Count > 0) //判斷隊列中是否有數據
                    {
                        Exception ex = MyExceptionAttribute.exceptionQueue.Dequeue();//出隊
                        if (ex != null)
                        {
                            //string fileName = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
                            //File.AppendAllText(fileLogPath + fileName, ex.ToString(), Encoding.Default);//將異常追加寫入到文件中
 ILog logger = LogManager.GetLogger("errorMsg"); logger.Error(ex); //將異常信息寫到磁盤上
                        }
                        else
                        {
                            Thread.Sleep(3000);
                        }
                    }
                    else
                    {
                        Thread.Sleep(3000);//若是隊列中沒有數據,讓當前線程休息3秒鐘,避免形成CPU空轉,避免CPU的浪費
                    }
                }
            }, null);
            #endregion


        }
    }
}

 

4.測試效果

 

5.源碼下載:

點擊下載源碼>>

點擊下載數據庫文件>>

 

6.擴展閱讀:

ASP.NET 配置log4net啓用寫錯誤日誌功能

 注意:

相關文章
相關標籤/搜索