.NET平臺下Log4Net.dll一個日誌記錄包的使用

1.配置文件(log4net.config)讀取:

  在AssemblyInfo.cs 文件新加 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

2.配置文件(log4net.config):

 <!--MySQL數據庫-->
    <appender name="AdoNetAppender_MySql" type="log4net.Appender.AdoNetAppender">

      <ConnectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"/>
      <ConnectionString value="server=localhost;database=mysql;Uid=root;Pwd=password;port=3306;"/>


      <!--Oracle數據庫--><!--
      <appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender">
        --><!-- Oracle數據源 ,本地安裝Oracle客戶端--><!--
        --><!--<connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />--><!--
        --><!-- Oracle連接字符串--><!--
        <connectionString value="Data Source=127.0.0.1;database=dcaddb;uid=root;pwd=root" />-->
        <!--  
            Log4net默認數據表中有Datetime,Thread,Log_Level,Logger,Message這五個字段  
            數據庫表名Log  
            我們創建數據表時,可以根據自已需求  
            在這裏創建的Log表多加userid,username兩個字段  
            數據表自已提前在數據庫定義好            
            -->
        <!--<commandText value="INSERT INTO log (RECORDDATE,USERNAME,USERIP,THREADID,LOGLEVEL,LOGGER,MESSAGE,EXCEPTIONINFO,UNITTYPE) VALUES (:recorddate, :username, :userip, :threadid, :loglevel, :logger, :message, :exceptioninfo,:unittype)" />-->
        <commandText value="INSERT INTO log (RECORDDATE,USERNAME,USERIP,THREADID,LOGLEVEL,LOGGER,MESSAGE,EXCEPTIONINFO) VALUES (@recorddate, @username, @userip, @threadid, @loglevel, @logger, @message, @exceptioninfo)" />
        
        <parameter>
          <parameterName value="@message" />
          <dbType value="String" />
          <size value="2000" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%message" />
          </layout>
        </parameter>

        <!--自定義成員 -->
        <parameter>
          <parameterName value="@username" />
          <dbType value="String" />
          <size value="50" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%aspnet-cache{username}" />       //必須先存入內存中 : HttpContext.Current.Cache["username"] = %用戶名;
          </layout>
        </parameter>
        
        <!--日誌級別限制-->
        <filter type="log4net.Filter.LevelRangeFilter">
          <param name="LevelMin" value="INFO" />
          <param name="LevelMax" value="FATAL" />
        </filter>
      </appender>

3.新建logUtil工具類(利用 log4net.dll 中的 ILog 初始化 自定義 Log4Net 類(info、warn、error、fatal、SaveMessage等方法))

=logUtil類==

public class LogUtil
    {
        private static ILog Log4Net;

        public static void debug(string message,string exception)
        {
            if (Log4Net.IsDebugEnabled)
            {
                Log4Net.Debug(message, new Exception(exception));
            }
        }

        public static void error(string message,string exception)
        {
            if (Log4Net.IsErrorEnabled)
            {
                Log4Net.Error(message, new Exception(exception));
            }

        }

        public static void fatal(string message,string exception)
        {
            if (Log4Net.IsFatalEnabled)
            {
                Log4Net.Fatal(message, new Exception(exception));
            }
        }

        public static void info(string message,string exception)
        {
            if (Log4Net.IsInfoEnabled)
            {
                Log4Net.Info(message, new Exception(exception));
            }
        }

        public static void warn(string message,string exception)
        {
            if (Log4Net.IsWarnEnabled)
            {
                Log4Net.Warn(message, new Exception(exception));
            }
        }


  /// <summary>
        /// 需要寫日誌的地方調用此方法  
        /// </summary>
        /// <param name="message">信息</param>
        /// <param name="exception">異常</param>
        /// <param name="level">日誌級別:1[一般] 2[警告] 3[錯誤] 4[嚴重]</param>
        /// INFO(一般信息):記錄系統運行中應該讓用戶知道的基本信息。例如,服務開始運行,功能已經開戶等。
        /// WARN(警告):記錄系統中不影響系統繼續運行,但不符合系統運行正常條件,有可能引起系統錯誤的信息。例如,記錄內容爲空,數據內容不正確等。 
        /// ERROR(一般錯誤):記錄系統中出現的導致系統不穩定,部分功能出現混亂或部分功能失效一類的錯誤。例如,數據字段爲空,數據操作不可完成,操作出現異常等。
        /// FATAL(致命錯誤):記錄系統中出現的能使用系統完全失去功能,服務停止,系統崩潰等使系統無法繼續運行下去的錯誤。例如,數據庫無法連接,系統出現死循環。
        /// DEBUG(調試信息):記錄系統用於調試的 一切信息,內容或者是一些關鍵數據內容的輸出。
        /// <param name="logtype">日誌類別:1[登錄監控] 2[功能監控] 3[數據監控] 4[運行狀態]</param>
        public static void SaveMessage(string message,string exception,int level,int logtype)
        {
            //從配置文件中讀取Logger對象
            switch (logtype)//日誌類別:1[登錄監控] 2[功能監控] 3[數據監控] 4[運行狀態]
            {
                case 1:
                    {
                        Log4Net = log4net.LogManager.GetLogger("LoginRecordLog");
                        break;
                    }
                case 2:
                    {
                        Log4Net = log4net.LogManager.GetLogger("FunctionRecordLog");
                        break;
                    }
                case 3:
                    {
                        Log4Net = log4net.LogManager.GetLogger("DataRecordLog");
                        break;
                    }
                case 4:
                    {
                        Log4Net = log4net.LogManager.GetLogger("RunningRecordLog");
                        break;
                    }
                default:break;
            }

            switch (level) //日誌級別:1[一般] 2[警告] 3[錯誤] 4[嚴重]  
            {
                case 1:
                    {
                        info(message, exception);
                        break;
                    }
                case 2:
                    {
                        warn(message, exception);
                        break;
                    }
                case 3:
                    {
                        error(message, exception);
                        break;
                    }
                case 4:
                    {
                        fatal(message, exception);
                        break;
                    }
                default:break;
            }
        }

        /// <summary>
        /// 用於單獨記錄資料下載情況的日誌
        /// </summary>
        /// <param name="message">日誌信息</param>
        /// <param name="exception">可以爲空字符串</param>
        public static void DownLoadMessage(string message,string exception)
        {
            Log4Net = log4net.LogManager.GetLogger("DownLoadLog");
            if (Log4Net.IsDebugEnabled)
            {
                Log4Net.Debug(message, new Exception(exception));
            }
        }


    }

4.業務邏輯中,利用 Log4Net.SaveMessage 方法 記錄日誌

//成功登入
 LogUtil.SaveMessage("[" + model_user.Name +"("+model_user.UserCode+")]" + " 通過賬號驗證,成功登錄<數據彙集與分發系統>", "", 1, 1);
//失敗登入
 LogUtil.SaveMessage("[" + model_user.Name + "(" + model_user.UserCode + ")]" + "通過賬號驗證失敗,未能成功登錄!", "", 2, 1);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章