log4net使用簡明教程


在項目當中經常會遇到各種各樣的問題,如何可以盡快找到問題,那么就只能靠日志了,所以一個系統的日志是否完備合理就尤為重要。

在日志管理插件中log4net相當流行,下面就簡單說明一下使用方法。

log4net的官方網址為http://logging.apache.org/log4net/download_log4net.cgi

如果英文較好,可以直接看官方網站的教程,尤其是config部分的教程http://logging.apache.org/log4net/release/config-examples.html

下面示例教程的源代碼下載網址為:log4net示例工程  下載地址2

1、引入log4net組件

在Visual Studio中選中所需添加log4net的項目,點擊鼠標右鍵,選擇【管理NuGet程序包】

輸入關鍵字log4,查找對應程序包,並點擊安裝

完成完成之后,你可以在引用中看到已經成功引用log4net

2、配置log4net參數。由於配置文件內容比較多,詳細內容可以下載示例工程代碼,這里只是對有關錯誤日志信息的定義進行說明,其他類似

<appender name="ERRORAppender" type="log4net.Appender.RollingFileAppender">
      <!-- 日志記錄路徑,此處為相對路徑,即站點根目錄 -->
      <file value="logs\\ERROR\\" />
      <!-- 日志記錄方式,此處為追加模式 -->
      <appendToFile value="true" />
      <!-- 日志文件滾動模式,此處定義為復雜模式 -->
      <rollingStyle value="Composite" />
      <!-- 日志文件名規則,結合上一點配合使用,最終日志文件為logs\ERROR\2013\201309\20130927.log -->
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.log'" />
      <!-- 如下參數可直接使用,就不多做闡述,主要是上面的參數,其他教程沒有 -->
      <staticLogFileName value="false"/>
      <maxSizeRollBackups value="100" />
      <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR"/>
        <param name="LevelMax" value="ERROR"/>
      </filter>
    </appender>

3、完成配置之后就可以進行在程序中調用了,為了方便調用,我定義了一個日志記錄類LogHelper,具體代碼如下:

using System;
using log4net;

namespace WebApplication1.ActionHelper
{

    public class LogHelper
    {
        private ILog logger;

        public LogHelper(ILog log)
        {
            this.logger = log;
        }

        public void Info(object message)
        {
            this.logger.Info(message);
        }

        public void Info(object message, Exception e)
        {
            this.logger.Info(message, e);
        }

        public void Debug(object message)
        {
            this.logger.Debug(message);
        }

        public void Debug(object message, Exception e)
        {
            this.logger.Debug(message, e);
        }

        public void Warning(object message)
        {
            this.logger.Warn(message);
        }

        public void Warning(object message, Exception e)
        {
            this.logger.Warn(message, e);
        }

        public void Error(object message)
        {
            this.logger.Error(message);
        }

        public void Error(object message, Exception e)
        {
            this.logger.Error(message, e);
        }

        public void Fatal(object message)
        {
            this.logger.Fatal(message);
        }

        public void Fatal(object message, Exception e)
        {
            this.logger.Fatal(message, e);
        }
    }

    public class LogFactory
    {
        static LogFactory()
        {
        }

        public static LogHelper GetLogger(Type type)
        {
            return new LogHelper(LogManager.GetLogger(type));
        }

        public static LogHelper GetLogger(string str)
        {
            return new LogHelper(LogManager.GetLogger(str));
        }
    }
}

然后再具體頁面中可以按照如下方式進行調用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        private ActionHelper.LogHelper log;

        protected void Page_Load(object sender, EventArgs e)
        {
            pageLoad();
        }

        private void pageLoad()
        {
            
            log = ActionHelper.LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName + ":" + MethodBase.GetCurrentMethod().Name);
            log.Info("起始頁面載入222");
            log.Error("起始頁面載入");
        }
    }
}

4、如為了省事,需要對系統中所有的異常進行捕捉處理,則可以在Global.asax中進行定義

        protected void Application_Error(object sender, EventArgs e)
        {
            ActionHelper.LogHelper log = ActionHelper.LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
            log.Error("未處理異常",HttpContext.Current.Server.GetLastError());
        }

至此就設置完成了。

 

全部設置下來其實還是比較簡單的,如果實在不明白,可以直接下載:log4net示例工程 下載地址2 一看就明白了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM