日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

.net項目使用日志框架log4net_實用技巧

作者:.NET開發菜鳥 ? 更新時間: 2022-04-28 編程語言

一、log4net簡介

Log4net是Apache下一個開放源碼的項目,我們可以控制日志信息的輸出目的地。
Log4net中定義了多種日志信息輸出模式。
在做項目的時候最頭疼的是在程序發布到正式環境之后出現了問題,我們不能調試而且問題很難找到,于是我們需要大量的日志數據來精確的跟蹤程序的運行狀態。
Log4net可以幫我們來解決這一個難題,對于日志的輸出我們不需要人為的去干涉,它可以根據需要將日志輸出到控制臺、文本文件、Windows日志事件查看器、數據庫、郵件等位置,以便我們快速跟蹤程序bug。

二、log4net結構

log4net主要分為5個核心組件:Logger、APPender、Filter、Layout、Object Render。

1、Logger:

主要用于記錄日志的分類和控制日志的級別。它可以以多種格式輸出日志信息,同時它也可以控制日志的輸出級別。

2、APPender:

?? 這里我們簡單稱之為“附著器”,意思就是說日志的輸出必須依賴于它,更確切的說以文本形式輸出,還是控制臺格式輸出都必須要依靠它來控制。log4net定義了多種附著器:
(1)AdoNetAppender:將日志記錄到數據庫中,可以采用SQL和存儲過程兩種方式。
(2)FileAppender:將日志寫到文件中。
(3)MemoryAppender:將日志存到內存緩沖區。
(4)ConsoleAppender:將日志輸出到控制臺。
(5)EventLogAppender:將日志寫到Windows Event Log中。
(6)ANSIColorTerminalAppender:在ANSI窗口終端寫下高亮度的日志事件。
(7)ASPNetTraceAppender:能用asp.net中Trace的方式查看記錄的日志。
(8)BufferingForwardingAppender:在輸出到Appenders之前先緩存日志事件。
(9)RollingFileAppender:將日志以回滾文件的形式寫到文件中。
(10)SmtpAppender:將日志寫到郵件中。

3、Filter:

? Appender是將日志以缺省值的方式輸出,意思就是按照默認值的方式輸出。而Filter意思是過濾器,使用Filter可以將日志以不同的格式來輸出。

4、Layout:

? 這個用于控制日志輸出顯示格式。

5、Object Render

? 用于按照用戶自定義標準來輸出日志。

三、Log4net參數:

針對Layout設置日志輸出的格式
1.%m(message):輸出的日志消息
2.%n(new line):換行
3.%d(datetime):輸出當前語句運行的時刻
4.%r(runtime):輸出程序從運行到當前語句時消耗的毫秒數
5.%t(thread id):當前語句所在線程的ID
6.%p(priority):日志的當前優先級
7.%c(Class):當前日志對象的名稱
8.%f(file):輸出語句所在的文件名
9.%l(line):輸出語句所在的行號
10.%數字:表示該項的最小寬度,如果不夠,則用空格填充。

例如:"[時間]:%d%n[級別]:%p%n[內容]:%m%n%n"
[時間]:2016-10-28 10:21:38,634
[級別]:INFO
[內容]:>>>>>>>>>>>

四、Log4net日志分類

Log4net 分為如下幾個級別:

  • FATAL 毀滅級別
  • ERROR 錯誤級別
  • WARA? 警告級別
  • INFO? 消息級別
  • DEBUG 調試級別

這幾種日志級別高低:FATAL>ERROR>WARA>INFO>DEBUG
只有日志輸出級別大于或等于配置的級別才能輸出日志信息。
比如我的日志配置級別為INFO,那么只有log.info(),log.warm(),log.Error(),log.Fatal()才能輸出日志信息,Debug方式就不能輸出。
Log4net中還有兩種特殊的配置級別:ALL -允許所有的日志級別輸出,OFF - 拒絕所有的日志級別輸出。

五、在配置中啟用和關閉日志

在config文件中可以很方便地關閉和啟用日志,就是在進行配置,如下就是一個例子:

 
       
       
       
       
       
       
       
       
 

在上面的例子中可以看出,如果想增加日志輸出目的地,增加節點就是了,注意后面的ref是在config中配置的appender name,如果想要取消,刪除或者注釋掉這行就可以了。

六、log4net使用

1、引用log4net.dll文件

使用log4net必須引入log4net.dll文件,兩種下載log4net.dll的方式:

(1)、在Nuget中下載log4net

點擊"安裝"進行安裝

(2)、在官網下載

官網網址:http://logging.apache.org/log4net/

下載DLL文件,解壓之后根據.NET FRAMEWORK的版本,選擇對應的DLL文件,文件路徑:C:\Users\Lenovo\Desktop\log4net-2.0.7-bin-newkey\log4net-2.0.7\bin\net\4.5\release。

引用->添加引用,將下載的log4net.dll文件添加進來。

2、在config文件中的配置

首先要添加config文件,在類庫項目、命令行程序及WinForm中添加的是app.config,在WebForm中添加的是web.config。或者新添加一個"應用程序配置文件",將配置信息添加在新的配置文件中,在本示例中,將配置信息添加在新的應用程序配置文件中。新的配置文件命名為:log4net.config。

注意:要將log4net.config的屬性“復制到輸出目錄”設置為“始終復制”。在log4net上右鍵選擇文件屬性,修改屬性

要使用log4net,首先要在config文件的節點中增加配置(如果沒有這個節點請手動增加),如下:


    

除此之外,還要在頂級節點下增加子節點。在節點下就可以增加子節點,每個子節點代表一種記錄日志的方式。

在使用日志的類的命名空間前加上XmlConfiguratorAttribute標記

不加這個標記的話則log無法生效,如果類較多則比較麻煩,此時可以把這個配置放在AssemblyInfo.cs中,針對整個程序集生效。

3、示例程序

配置文件:

 
 
 
   
     

在程序中使用log4net記錄日志:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using log4net;

namespace Log4netDemo
{
    class Program
    {        
        static void Main(string[] args)
        {
            //創建文件對象
            ILog log = LogManager.GetLogger("log4netDemo");
            //開啟配置
            log4net.Config.XmlConfigurator.Configure();
            log.Debug("我是Debug");
            log.Info("我是Info");
            log.Error("我是Error");

            Console.ReadKey();
        }
    }
}

輸出結果(以控制臺為例):

在config文件中設置的日志輸出級別是INFO,而Debug的級別小于INFO,所以只輸出Info和Error。

在WebForm中也可以使用Log4net,如果是web項目,需要在global.asax的Application_Start方法中配置web.config的引用,log4net.Config.XmlConfigurator.Configure();???

原文鏈接:https://www.cnblogs.com/dotnet261010/p/6274956.html

欄目分類
最近更新