亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

概述

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

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

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

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

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

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

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

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

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

Log4net的優(yōu)點

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

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

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

實踐

如何配置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>
        /// 記錄嚴重錯誤日志
        /// </summary>
        /// <param name="message">消息內容</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("日志嚴重錯誤信息記錄錯誤" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }


        /// <summary>
        /// 記錄錯誤日志
        /// </summary>
        /// <param name="message">消息內容</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("日志異常信息記錄錯誤" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }


        /// <summary>
        /// 記錄警告日志
        /// </summary>
        /// <param name="message">消息內容</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("日志警告信息記錄錯誤" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }

        /// <summary>
        /// 記錄信息日志
        /// </summary>
        /// <param name="message">消息內容</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("日志信息記錄錯誤" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }

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

        #region 私有方法

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

        #endregion

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

相關文章

  • c#中合并DataTable重復行的值

    c#中合并DataTable重復行的值

    c#中合并DataTable重復行的值,需要的朋友可以參考一下
    2013-05-05
  • c#開發(fā)word批量轉pdf源碼分享

    c#開發(fā)word批量轉pdf源碼分享

    已經安裝有Office環(huán)境,借助一些簡單的代碼即可實現(xiàn)批量Word轉PDF,看下面的實例源碼吧
    2013-12-12
  • C# winformTextBox 鍵盤監(jiān)聽方式

    C# winformTextBox 鍵盤監(jiān)聽方式

    這篇文章主要介紹了C# winformTextBox 鍵盤監(jiān)聽方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • C#獲取文件夾及文件的大小與占用空間的方法

    C#獲取文件夾及文件的大小與占用空間的方法

    這篇文章主要介紹了C#獲取文件夾及文件的大小與占用空間的方法,需要的朋友可以參考下
    2014-07-07
  • C#版ftp方法實現(xiàn)類的代碼

    C#版ftp方法實現(xiàn)類的代碼

    C#版ftp方法實現(xiàn)類的代碼...
    2007-04-04
  • C#調用C++的實現(xiàn)步驟

    C#調用C++的實現(xiàn)步驟

    本文主要介紹了C#調用C++的基本規(guī)則和方法,包括內存對齊、調用約定、基本數(shù)據類型的傳遞、結構體的傳遞以及數(shù)組的傳遞等,感興趣的可以了解一下
    2024-11-11
  • C# TextBox多行文本框的字數(shù)限制問題

    C# TextBox多行文本框的字數(shù)限制問題

    最近在使用C# TextBox多行文本框的時候,發(fā)現(xiàn)了其對字數(shù)限制的一點問題,所以總結下在使用C# TextBox多行文本框要注意的的字數(shù)限制問題,現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Unity實現(xiàn)UI光暈效果(發(fā)光效果)

    Unity實現(xiàn)UI光暈效果(發(fā)光效果)

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)UI光暈效果,發(fā)光效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • C# this關鍵字的四種用法

    C# this關鍵字的四種用法

    這篇文章主要為大家詳細介紹了C# this關鍵字的四種用法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Unity實現(xiàn)人物旋轉和移動效果

    Unity實現(xiàn)人物旋轉和移動效果

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)人物旋轉和移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01

最新評論