欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#配置log4net實(shí)現(xiàn)將日志分類記錄到不同的日志文件中

 更新時(shí)間:2024年02月25日 09:15:23   作者:搬磚的詩人Z  
log4net是.Net下一個(gè)非常優(yōu)秀的開源日志記錄組件,log4net記錄日志的功能非常強(qiáng)大,它可以將日志分不同的等級(jí),以不同的格式,輸出到不同的媒介,下面我們就來看看C#如何配置log4net讓日志分類記錄到不同的日志文件吧

概述

Log4net庫是.Net下一個(gè)非常優(yōu)秀的開源日志記錄組件,是一個(gè)幫助程序員將日志信息輸出到各種目標(biāo)(控制臺(tái)、文件、數(shù)據(jù)庫等)的工具。

它具有:支持多數(shù)框架、可輸出日志到多種目標(biāo)、層級(jí)日志體系、可使用XML配置、可動(dòng)態(tài)配置、模塊化和可擴(kuò)展化設(shè)計(jì)、靈活、高性能等特征。

日志記錄器(Logger)的行為是分等級(jí)的,一般可分為5種日志等級(jí)(Level),優(yōu)先級(jí)從高到低:

1、FATAL(致命錯(cuò)誤):記錄系統(tǒng)中出現(xiàn)的能使用系統(tǒng)完全失去功能,服務(wù)停止,系統(tǒng)崩潰等使系統(tǒng)無法繼續(xù)運(yùn)行下去的錯(cuò)誤。例如,數(shù)據(jù)庫無法連接,系統(tǒng)出現(xiàn)死循環(huán)。

2、ERROR(一般錯(cuò)誤):記錄系統(tǒng)中出現(xiàn)的導(dǎo)致系統(tǒng)不穩(wěn)定,部分功能出現(xiàn)混亂或部分功能失效一類的錯(cuò)誤。例如,數(shù)據(jù)字段為空,數(shù)據(jù)操作不可完成,操作出現(xiàn)異常等。

3、WARN(警告):記錄系統(tǒng)中不影響系統(tǒng)繼續(xù)運(yùn)行,但不符合系統(tǒng)運(yùn)行正常條件,有可能引起系統(tǒng)錯(cuò)誤的信息。例如,記錄內(nèi)容為空,數(shù)據(jù)內(nèi)容不正確等。

4、INFO(一般信息):記錄系統(tǒng)運(yùn)行中應(yīng)該讓用戶知道的基本信息。例如,服務(wù)開始運(yùn)行,功能已經(jīng)開戶等。

5、DEBUG (調(diào)試信息):記錄系統(tǒng)用于調(diào)試的一切信息,內(nèi)容或者是一些關(guān)鍵數(shù)據(jù)內(nèi)容的輸出。

我們可以控制到應(yīng)用程序中相應(yīng)級(jí)別的日志信息的開關(guān)。比如在定義了INFO級(jí)別, 則應(yīng)用程序中所有DEBUG級(jí)別的日志信息將不被打印出來。

Log4net的優(yōu)點(diǎn)

可以提供應(yīng)用程序運(yùn)行時(shí)的精確環(huán)境,可供開發(fā)人員盡快找到應(yīng)用程序中的Bug

一旦在程序中加入了Log 輸出代碼,程序運(yùn)行過程中就能生成并輸出日志信息而無需人工干預(yù)

日志信息可以輸出到不同的地方(控制臺(tái),文件等)以備以后研究之用

實(shí)踐

如何配置log4net,讓日志分類記錄到不同的日志文件中

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
  </startup>
  <log4net>
    <root>
      <priority value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
      <appender-ref ref="RollingLogWarnFileAppender"/>
      <appender-ref ref="RollingLogFatalFileAppender"/>
      <appender-ref ref="RollingLogInfoFileAppender"/>
      <!--<appender-ref ref="ColoredConsoleAppender" />-->
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Error\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy_MM_dd'.log'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="ERROR" />
      </filter>
    </appender>
    <appender name="RollingLogWarnFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Warn\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy_MM_dd'.log'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="WARN" />
        <levelMax value="WARN" />
      </filter>      
    </appender>
    <appender name="RollingLogFatalFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Fatal\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy_MM_dd'.log'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="FATAL" />
        <levelMax value="FATAL" />
      </filter>
    </appender>
    <appender name="RollingLogInfoFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Info\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy_MM_dd'.log'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="INFO" />
      </filter>
    </appender>    
    <!--<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <mapping>
        <level value="FATAL" />
        <foreColor value="Red, HighIntensity" />
      </mapping>
      <mapping>
        <level value="ERROR" />
        <foreColor value="Red" />
      </mapping>
      <mapping>
        <level value="WARN" />
        <foreColor value="Yellow" />
      </mapping>
      <mapping>
        <level value="INFO" />
        <foreColor value="White" />
      </mapping>
      <mapping>
        <level value="DEBUG" />
        <foreColor value="Green" />
      </mapping>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
    </appender>-->
  </log4net>

</configuration>

使用代碼

private static readonly ILog logInfo = LogManager.GetLogger("loginfo");
        static LoggingHelper()
        {
            IntiLocalLog();
        }

        /// <summary>
        /// 記錄嚴(yán)重錯(cuò)誤日志
        /// </summary>
        /// <param name="message">消息內(nèi)容</param>
        /// <param name="ex">異常信息</param>
        /// <param name="isWriteDebug">是否在output輸出</param>
        public static void Fatal(string message, Exception ex = null, bool isWriteDebug = true)
        {
            Task.Factory.StartNew(() =>
            {
                logInfo.Fatal(message, ex);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志嚴(yán)重錯(cuò)誤信息記錄錯(cuò)誤" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }


        /// <summary>
        /// 記錄錯(cuò)誤日志
        /// </summary>
        /// <param name="message">消息內(nèi)容</param>
        /// <param name="ex">異常信息</param>
        /// <param name="isWriteDebug">是否在output輸出</param>
        public static void Error(string message, Exception ex = null, bool isWriteDebug = true)
        {
            Task.Factory.StartNew(() =>
            {
                logInfo.Error(message, ex);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志異常信息記錄錯(cuò)誤" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }


        /// <summary>
        /// 記錄警告日志
        /// </summary>
        /// <param name="message">消息內(nèi)容</param>
        /// <param name="ex">異常信息</param>
        /// <param name="isWriteDebug">是否在output輸出</param>
        public static void Warn(string message, Exception ex = null, bool isWriteDebug = true)
        {
            Task.Factory.StartNew(() =>
            {
                 logInfo.Warn(message, ex);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志警告信息記錄錯(cuò)誤" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }

        /// <summary>
        /// 記錄信息日志
        /// </summary>
        /// <param name="message">消息內(nèi)容</param>
        /// <param name="ex">異常信息</param>
        /// <param name="isWriteDebug">是否在output輸出</param>
        public static void Info(string message, Exception ex = null, bool isWriteDebug = true)
        {
            Task.Factory.StartNew(() =>
            {
                logInfo.Info(message, ex);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志信息記錄錯(cuò)誤" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }

        /// <summary>
        /// 記錄調(diào)試日志
        /// </summary>
        /// <param name="message">消息內(nèi)容</param>
        public static void Debug(string message)
        {
            Task.Factory.StartNew(() =>
            {
                logInfo.Debug(message);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志調(diào)試信息記錄錯(cuò)誤" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }

        #region 私有方法

        private static void IntiLocalLog()
        {
            log4net.Config.XmlConfigurator.Configure();
        }

        #endregion

到此這篇關(guān)于C#配置log4net實(shí)現(xiàn)將日志分類記錄到不同的日志文件中的文章就介紹到這了,更多相關(guān)C# log4net日志分類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論