網站首頁 編程語言 正文
一、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文件中可以很方便地關閉和啟用日志,就是在
在上面的例子中可以看出,如果想增加日志輸出目的地,增加
六、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
相關推薦
- 2023-01-19 python使用?f?格式化字符串的用法_python
- 2022-08-04 Docker?Desktop更改鏡像存儲位置的實現_docker
- 2022-09-24 python實現字母閃爍效果的示例代碼_python
- 2022-06-01 基于Android實現可滾動的環形菜單效果_Android
- 2022-09-03 golang?四則運算計算器yacc歸約手寫實現_Golang
- 2024-03-22 【IDEA】maven項目刷新依賴的兩種方式
- 2022-04-14 Python函數式編程實現登錄注冊功能_python
- 2022-12-31 Python中CSV文件的讀寫庫操作方法_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支