Log4Net 使用及組合公共類

  好記性不如爛筆頭,此次是由衷的感覺到了!html

  log4net 是一個很好用的日誌記錄工具,引用入項目中,如何查看項目內部運行狀況,如何快速定位異常信息,好的日誌記錄能幫很大的忙;app

  log4net 很好用,快速上手,配置簡單,但是 (捂臉)本身配置就是配不上啊!!!!由於不想解讀源碼,只想快速配置好進行讀取記錄,哎,難死了。。。。。。工具

  可是功夫不負有心人,只要功夫深,鐵棒磨成針!在本身堅持之下,終於配置完成了,可以生成日誌,進行查看了! 不說了,開始記錄:測試

  1、單項目單獨使用spa

   一、 準備 log4net.dll(或者在 Vs  中搜索Nuget 程序包,下載 log4net 管理包)添加引用。線程

    

    

 

   二、引用完成以後,項目引用中有顯示剛纔操做dll3d

    

 

     三、添加AssemblyInfo 資源信息;(  [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]  )日誌

     

 

       四、添加log4net.config文件,右鍵 ---》編輯文件屬性:始終複製(通常.config 文件系統會默認始終複製屬性,防止特殊狀況,檢查處理一下。)    code

      

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--日誌存放位置 ~/..-->
      <file value="log\" />
      <!--文件命名方式-->
      <datePattern value="yyyy-MM-dd&quot;.txt&quot;" />
      <!--追加到文本末尾-->
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <staticLogFileName value="false" />
      <maxSizeRollBackups value="20" />
      <!--最多產生的日誌文件數,超過則只保留最新的n個。設定值value="-1"爲不限文件數-->
      <param name="MaxSizeRollBackups" value="30" />
      <layout type="log4net.Layout.PatternLayout">
        <!--%n日誌時間:%d [%t] %n日誌級別:%-5p %n消息描述:%c [%x] %n%m %n-->      
        <!--%n異常時間:%d [%t] %n異常級別:%-5p %n異常位置:[%thread] 代碼位置(%file:%line) %n消息描述:%message%n異常:%exception%n%n-->
        <param name="ConversionPattern" value="%d [%thread] %-5p %message (%file:%line) %n" />
      </layout>
    </appender>
  <!--識別的log4net配置名稱--> <logger name="loginfo"> <level value="ALL" /> <appender-ref ref="RollingLogFileAppender" /> </logger> </log4net> </configuration>

 

     四、項目使用測試!xml

       

 

       

 

    2、封裝log4net 到公用幫助類庫中      

      一、在公用幫助類庫中,添加 log4net.dll 引用,引用方式同上;

      二、在公用幫助類庫中,添加資源引用 AssemblyInfo.cs  添加log4net.config  配置讀取信息;方式同上添加方式。

      

      三、封裝Log4net  幫助類(LoggerHelper.cs) --看須要本身拓展      

using log4net;
using System;  
public class LogerHelper
    {      
        #region
        private static ILog _LoggerInfo;
        private static ILog LogInfo
        {
            get
            {
                if (_LoggerInfo == null)
                {                 
                    _LoggerInfo = log4net.LogManager.GetLogger("loginfo");
                }
                return _LoggerInfo;
            }
            set
            {
                value = _LoggerInfo;
            }
        }
        #endregion

        public LogerHelper(Type type)
        {
            LogInfo = LogManager.GetLogger(type);
        }

        static LogerHelper()
        {
            
        }

        public static void SetConfig()
        {
            log4net.Config.XmlConfigurator.Configure();
        }

        public static void SetConfig(FileInfo configFile)
        {
            log4net.Config.XmlConfigurator.Configure(configFile);
        }

        /// <summary>
        /// Log4日誌Error
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="ex"></param>
        public static void Error(Exception ex = null)
        {
            Error("出現異常!", ex);
        }

        /// <summary>
        /// Log4日誌
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="ex"></param>
        public static void Error(string msg = "出現異常", Exception ex = null)
        {
            try
            {
                if (LogInfo.IsErrorEnabled)
                {
                    LogInfo.Error(msg, ex);
                }
            }
            catch { }
        }

        /// <summary>
        /// Log4日誌Warn
        /// </summary>
        /// <param name="msg"></param>
        public static void Warn(string msg)
        {
            //Console.WriteLine(msg);
            LogInfo.Warn(msg);
        }

        /// <summary>
        /// Log4日誌Info
        /// </summary>
        /// <param name="msg"></param>
        public static void Info(string msg)
        {
            //Console.WriteLine(msg);
            LogInfo.Info(msg);
        }

        /// <summary>
        /// Log4日誌Debug
        /// </summary>
        /// <param name="msg"></param>
        public static void Debug(string msg)
        {
            //Console.WriteLine(msg);
            LogInfo.Debug(msg);
        }
    }

      四、工具類封裝loghelper 後,在輸出/展現應用程序中,須要添加 log4net.config  文件,若是不添加,將不會記錄日誌:

       好比我要在 console 控制檯應用程序中使用日誌,使用log4net 記錄輸出日誌時,須要在console 應用程序中添加 log4net.config 文件。

      

 

       

 

       五、日誌樣例:

      

    3、總結

    一、引用log4net.dll 後,看在哪使用,若是單獨使用,在當前應用程序的資源文件AssemblyInfo.cs 中添加 ;

      (若是你有公用的工具類庫,放置封裝log4net 的Helper信息時,在log4netHelper  所在應用程序資源文件AssemblyInfo.cs 中添加 ),

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

    二、在最終的輸出應用程序中添加 log4net.config,設置文件屬性爲始終複製;

    三、log4net.config  中內容記錄展現樣式:(log4net.Layout.PatternLayout --》ConversionPattern 配置)

 

%m[%message] : 輸出的日誌消息
%n : 換行
%d[%datetime] : 輸出當前語句運行的時刻
%r : 輸出程序從運行到執行到當前語句時消耗的毫秒數
%d : 當前語句所在的線程ID
%p : 日誌的當前優先級別
%c :當前日誌對象的名稱
%L : 輸出語句所在的行號
%F :輸出語句所在的文件名
%-數字 :表示該項的最小長度,若是不夠,則用空格填充

 

   本文log4net.config  文件知足通常須要,想配置更多,功能更全,建議瞭解一下log4net.Config 節點參數。

   配置到類庫中進行調用參考:http://grim1980.blog.sohu.com/255519333.html

   配置文件log4net.config  配置內容解說:http://www.javashuo.com/article/p-hwczyyyt-gu.html

 

   若有不合理之處,請你們多多指教。

   若是您以爲本文對您有幫助,歡迎點擊「收藏」按鈕!(/:微笑)歡迎轉載,轉載請註明出處。

相關文章
相關標籤/搜索