您好,登錄后才能下訂單哦!
這篇文章主要講解了“C#怎么使用Log4.net記錄日志文件”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C#怎么使用Log4.net記錄日志文件”吧!
幾乎所有的大型應用都會有自己的用于跟蹤調試的API。因為一旦程序被部署以后,就不太可能再利用專門的調試工具了。然而一個管理員可能需要有一套強大的日志系統來診斷和修復配置上的問題。經驗表明,日志記錄往往是軟件開發周期中的重要組成部分。它具有以下幾個優點:
1.它可以提供應用程序運行時的精確環境,可供開發人員盡快找到應用程序中的Bug;
2.一旦在程序中加入了Log 輸出代碼,程序運行過程中就能生成并輸出日志信息而無需人工干預。
3.另外,日志信息可以輸出到不同的地方(控制臺,文件等)以備以后研究之用。
4.Log4net就是為這樣一個目的設計的,用于.NET開發環境的日志記錄包。
log4net有四種主要的組件,分別是Logger(記錄器), Repository(庫), Appender(附著器)以及 Layout(布局)。
1.AdoNetAppender:利用ADO.NET記錄到數據庫的日志。
2.AnsiColorTerminalAppender:在ANSI 窗口終端寫下高亮度的日志事件。
3.AspNetTraceAppender:能用asp.net中Trace的方式查看記錄的日志。
4.BufferingForwardingAppender:在輸出到子Appenders之前先緩存日志事件。
5.ConsoleAppender:將日志輸出到控制臺。
6.EventLogAppender:將日志寫到Windows Event Log.
7.FileAppender:將日志寫到文件中。
8.LocalSyslogAppender:將日志寫到local syslog service (僅用于UNIX環境下).
9.MemoryAppender:將日志存到內存緩沖區。
10.NetSendAppender:將日志輸出到Windows Messenger service.這些日志信息將在用戶終端的對話框中顯示。
11.RemoteSyslogAppender:通過UDP網絡協議將日志寫到Remote syslog service。
12.RemotingAppender:通過.NET Remoting將日志寫到遠程接收端。
13.RollingFileAppender:將日志以回滾文件的形式寫到文件中。
14.SmtpAppender:將日志寫到郵件中。
15.TraceAppender:將日志寫到.NET trace 系統。
16.UdpAppender:將日志connectionless UDP datagrams的形式送到遠程宿主或以UdpClient的形式廣播。
1.%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息
2.%n(new line):換行
3.%d(datetime):輸出當前語句運行的時刻
4.%r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數
5.%t(thread id):當前語句所在的線程ID
6.%p(priority): 日志的當前優先級別,即DEBUG、INFO、WARN…等
7.%c(class):當前日志對象的名稱,例如:
8.%f(file):輸出語句所在的文件名。
9.%l(line):輸出語句所在的行號。
10.%數字:表示該項的最小長度,如果不夠,則用空格填充,如“%-5level”表示level的最小寬度是5個字符,如果實際長度不夠5個字符則以空格填充。
1.要使用log4.net記錄日志功能,就要建立在Web或者Winform程式中的AssemblyInfo.cs文件中添加如下一語句,這句話的意思是log4net會自動尋找配置文件log4net.config,從而獲得并加載其中的配置信息。注意此處的ConfigFile要與項目中的.Config文件名稱保持一致。這個配置文件名稱在建立的項目下面默認為App.config或Web.config。
ConfigFile要與項目中的.Config文件名稱一致
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
2.要使用log4net,首先要在config文件的<configSections>節點中增加配置(如果沒有這個節點請手動增加),如下:
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler"/> </configSections>
3.除此之外,還要在頂級節點<configuration>下增加<log4net>子節點。在<log4net>節點下就可以增加<appender>子節點,每個<appender>子節點代表一種記錄日志的方式(僅在這里配置了不代表啟用了)。
<log4net> <!-- name屬性指定其名稱,type則是log4net.Appender命名空間的一個類的名稱,意思是指定使用哪種介質--> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="E:\Log\\"/> <!-- 輸出到什么目錄,此處日志記錄沒有存放項目文件--> <appendToFile value="true"/> <!-- 是否到追加到文件中--> <rollingStyle value="Date"/> <!-- 文件創建方式,以日期的方式記錄--> <datePattern value="yyyy-MM-dd".txt""/> <!-- 文件格式,每天生成一個文件--> <staticLogFileName value="false"/> <!--否采用靜態文件名,文件名是否唯一--> <layout type="log4net.Layout.PatternLayout"> <!---日志內容布局--> <param name="ConversionPattern" value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline"/> <!--下面的輸出首尾樣式--> <param name="Header" value="
----------------------header--------------------------
"/> <param name="Footer" value="
----------------------footer--------------------------
"/> </layout> </appender> <!--另一種Appender--> <!--每個<appender>子節點代表一種記錄日志的方式(僅在這里配置了不代表啟用了)--> <appender name="DateFileInfoAppender" type="log4net.Appender.RollingFileAppender"> <file value="E:\Log\\log.txt"/> <!--輸出到什么文件--> <appendToFile value="true"/> <!--是否到附加到文件中--> <rollingStyle value="Size" /> <maxSizeRollBackups value="10"/> <!--日志文件的最大個數--> <maximumFileSize value="10MB"/> <!--單個日志文件最大的大小--> <staticLogFileName value="true"/> <!--否采用靜態文件名,文件名是否唯一--> <layout type="log4net.Layout.PatternLayout"> <!--日志內容布局--> <param name="ConversionPattern" value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline"/> </layout> </appender> <!--定義日志的輸出媒介,下面定義日志以幾種種方式輸出。也可以下面的按照一種類型或其他類型輸出。--> <root> <!--文件形式記錄日志--> <appender-ref ref="LogFileAppender" /> <!--控制臺控制顯示日志--> <!--<appender-ref ref="ConsoleAppender" />--> <!--Windows事件日志--> <!--<appender-ref ref="EventLogAppender" />--> <!--SQLite事件日志--> <!--<appender-ref ref="AdoNetAppender_SQLite" />--> <!--RollingFileAppender事件日志--> <!--<appender-ref ref="RollingFileAppender" />--> <!--RollingFileAppender事件日志,每天一個日志--> <!--<appender-ref ref="RollingLogFileAppender_DateFormat" />--> <!-- 如果不啟用相應的日志記錄,可以通過這種方式注釋掉 <appender-ref ref="AdoNetAppender_Access" /> --> </root> </log4net>
4.兩點注意事項
4.1 第一個:在點擊配置文件中,把log4.config 文件屬性中的下圖ITEM改為:賦值到輸出目錄->如果較新則復制。
4.2 第二個:在上面的配置文件中, <appender-ref ref="LogFileAppender" />和<appender name="DateFileInfoAppender" 的值需要保持一致
代碼:
namespace log4netDemo1 { class Program { public static class TestClass1 { private static readonly ILog log = LogManager.GetLogger(typeof(TestClass1)); public static void TestLog() { for (int i = 0; i < 3; ++i) { log.Info(string.Format("Log info {0}", i)); log.Debug(string.Format("Log debug {0}", i)); } } } public static class TestClass2 { private static readonly ILog log = LogManager.GetLogger(typeof(TestClass2)); public static void TestLog() { Random random = new Random(); for (int i = 0; i < 3; i++) { //創建日志記錄組件實例 //ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); ILog log = log4net.LogManager.GetLogger(typeof(TestClass2)); //記錄錯誤日志 log.Error("error", new Exception("在這裡發生了一個異常,Error Number:" + random.Next())); //記錄嚴重錯誤 log.Fatal("fatal", new Exception("在這裡發生了一個致命的錯誤,Exception Id:" + random.Next())); //記錄一般信息 log.Info("提示:系統正在運行"); //記錄調試信息 log.Debug("調試信息:debug"); //記錄警告信息 log.Warn("警告信息:warn"); } } } static void Main(string[] args) { try { TestClass1.TestLog(); TestClass2.TestLog(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
輸出日志文件記錄樣式:
----------------------header-------------------------- //TestClass1 2021-05-27 14:54:31,006 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:21) INFO log4netDemo1.Program+TestClass1 [(null)] - Log info 0 2021-05-27 14:54:31,026 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:22) DEBUG log4netDemo1.Program+TestClass1 [(null)] - Log debug 0 2021-05-27 14:54:31,027 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:21) INFO log4netDemo1.Program+TestClass1 [(null)] - Log info 1 2021-05-27 14:54:31,027 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:22) DEBUG log4netDemo1.Program+TestClass1 [(null)] - Log debug 1 2021-05-27 14:54:31,242 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:21) INFO log4netDemo1.Program+TestClass1 [(null)] - Log info 2 2021-05-27 14:54:31,243 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:22) DEBUG log4netDemo1.Program+TestClass1 [(null)] - Log debug 2 2021-05-27 14:54:31,243 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:41) ERROR log4netDemo1.Program+TestClass2 [(null)] - error //TestClass2 System.Exception: 在這裡發生了一個異常,Error Number:1406401970 2021-05-27 14:54:31,245 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:43) FATAL log4netDemo1.Program+TestClass2 [(null)] - fatal System.Exception: 在這裡發生了一個致命的錯誤,Exception Id:1970620894 2021-05-27 14:54:31,245 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:45) INFO log4netDemo1.Program+TestClass2 [(null)] - 提示:系統正在運行 2021-05-27 14:54:31,245 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:47) DEBUG log4netDemo1.Program+TestClass2 [(null)] - 調試信息:debug 2021-05-27 14:54:31,246 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:49) WARN log4netDemo1.Program+TestClass2 [(null)] - 警告信息:warn 2021-05-27 14:54:31,246 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:41) ERROR log4netDemo1.Program+TestClass2 [(null)] - error System.Exception: 在這裡發生了一個異常,Error Number:875602933 2021-05-27 14:54:31,246 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:43) FATAL log4netDemo1.Program+TestClass2 [(null)] - fatal System.Exception: 在這裡發生了一個致命的錯誤,Exception Id:2141773062 2021-05-27 14:54:31,246 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:45) INFO log4netDemo1.Program+TestClass2 [(null)] - 提示:系統正在運行 2021-05-27 14:54:31,247 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:47) DEBUG log4netDemo1.Program+TestClass2 [(null)] - 調試信息:debug 2021-05-27 14:54:31,247 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:49) WARN log4netDemo1.Program+TestClass2 [(null)] - 警告信息:warn 2021-05-27 14:54:31,247 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:41) ERROR log4netDemo1.Program+TestClass2 [(null)] - error System.Exception: 在這裡發生了一個異常,Error Number:128221959 2021-05-27 14:54:31,247 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:43) FATAL log4netDemo1.Program+TestClass2 [(null)] - fatal System.Exception: 在這裡發生了一個致命的錯誤,Exception Id:1256294856 2021-05-27 14:54:31,247 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:45) INFO log4netDemo1.Program+TestClass2 [(null)] - 提示:系統正在運行 2021-05-27 14:54:31,248 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:47) DEBUG log4netDemo1.Program+TestClass2 [(null)] - 調試信息:debug 2021-05-27 14:54:31,248 [9] (D:\Winform\控制臺\log4netDemo1\Program.cs:49) WARN log4netDemo1.Program+TestClass2 [(null)] - 警告信息:warn ----------------------footer--------------------------
感謝各位的閱讀,以上就是“C#怎么使用Log4.net記錄日志文件”的內容了,經過本文的學習后,相信大家對C#怎么使用Log4.net記錄日志文件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。