C#中使用NLog庫(kù)進(jìn)行日志記錄的流程詳解
引言
NLog 是 .NET 的日志記錄框架。具有豐富的日志路由和管理能力,極大地幫助您生成和管理日志。NLog 是一個(gè)庫(kù),可以輕松地同時(shí)記錄和管理多個(gè)不同區(qū)域(例如控制臺(tái)、數(shù)據(jù)庫(kù)或文本文件)中的數(shù)據(jù)。我們可以按如下方式列出 NLog 的功能:
擴(kuò)展:
在日志記錄時(shí),您可能希望將日志記錄保存在不同的位置,例如數(shù)據(jù)庫(kù)、文本文件或控制臺(tái)。NLog 允許您通過(guò)單個(gè)配置文件執(zhí)行這些操作。
此外,還有一些解決方案適用于緩沖、負(fù)載平衡、異步寫入和許多其他場(chǎng)景。
易于配置:
配置文件非常簡(jiǎn)單。您可以通過(guò)單個(gè)配置文件控制和管理整個(gè)過(guò)程。
可模板:
日志記錄時(shí)最重要的步驟之一是為遇到的不同方案創(chuàng)建不同的模板。例如,如果您想為要記錄的文件指定不同的名稱,NLog 庫(kù)將輕松為您提供此名稱。
NLog 在最簡(jiǎn)單的小型應(yīng)用程序以及大型和復(fù)雜的項(xiàng)目中非常有用。由于其豐富的配置功能,您可以在所有項(xiàng)目中使用它。
如何在 .NET 項(xiàng)目中使用 Nlog 庫(kù)?
1)安裝依賴:
在開(kāi)始處理應(yīng)用程序之前,必須安裝一些依賴項(xiàng)包。
打開(kāi) NuGet 包管理器:
Visual Studio 提供了多種使用 NuGet 包管理器的方法。
要做的第一件事是打開(kāi)包管理器控制臺(tái)??梢允褂?*“工具”>“NuGet 包管理器”>“包管理器控制臺(tái)**”執(zhí)行此操作,如圖 1–1–1 所示。
在打開(kāi)的控制臺(tái)中,在打開(kāi)的控制臺(tái)中運(yùn)行圖 1–1–2 (Install-Package NLog.Extensions.Logging) 中的命令。
2)創(chuàng)建記錄器:
對(duì)于我們的項(xiàng)目,我們將使用最簡(jiǎn)單的方法在 NLog 的 LogManager 類中創(chuàng)建一個(gè)記錄器。它提供了 GetCurrentClassLogger() 方法,用于獲取每個(gè)類的唯一記錄器。與全局配置的記錄器不同,每個(gè)類的記錄器可幫助您輕松捕獲日志消息的來(lái)源。
我們創(chuàng)建的記錄器將使用 NLog 的默認(rèn)日志級(jí)別系統(tǒng)。日志系統(tǒng)由以下 6 個(gè)級(jí)別組成:
致命:用于報(bào)告強(qiáng)制關(guān)閉應(yīng)用程序的錯(cuò)誤。
錯(cuò)誤:用于記錄程序執(zhí)行期間發(fā)生的嚴(yán)重問(wèn)題。
警告:用于報(bào)告非關(guān)鍵異常行為。
信息:用于向系統(tǒng)管理員和最終用戶突出顯示應(yīng)用程序進(jìn)度的信息性消息。
調(diào)試:用于調(diào)試包含有關(guān)應(yīng)用程序處理的擴(kuò)展信息的消息。
跟蹤:用于跟蹤代碼。
讓我們看看如何在代碼中使用 logger。
Program.cs文件應(yīng)如圖 1–2–1 中的代碼所示。
3)配置記錄器:
NLog 具有豐富的配置能力,提供了兩種配置記錄器的方法;以編程方式或通過(guò)配置文件。您可以在 Nlog 配置選項(xiàng)文檔中找到有關(guān)它們的詳細(xì)信息。
在本文中,我們將使用 nlog.config 文件配置記錄器。
首先,我們需要做的是在項(xiàng)目的根目錄下創(chuàng)建一個(gè) nlog.config 文件。您可以通過(guò)按 CTRL + SHIFT + A,選擇 XML 文件類型并在打開(kāi)的窗口中輸入名稱 nlog.config 來(lái)完成,如圖 1–3–1 所示。
然后,我們必須將文件的“復(fù)制到輸出目錄”屬性設(shè)置為“始終復(fù)制”,如圖 1-3-2 所示。可以通過(guò)右鍵單擊解決方案資源管理器中的文件并選擇“屬性”選項(xiàng)來(lái)完成此操作。
我們的配置文件必須如圖 1-3-3 所示。在圖 1-3-3 中,我們的配置由兩部分組成:設(shè)置日志記錄目標(biāo)和設(shè)置日志記錄規(guī)則。
我們決定為項(xiàng)目添加 3 個(gè)日志記錄目標(biāo):控制臺(tái)和 2 個(gè)日志文件。在配置文件中,它們中的每一個(gè)都將由一個(gè)單獨(dú)的 XML 元素表示。讓我們?cè)?nbsp;nlog.config 文件中編寫目標(biāo)。
然后,我們可以創(chuàng)建規(guī)則。在 NLog 中,每個(gè)規(guī)則都可以應(yīng)用于多個(gè)記錄器和目標(biāo),并且必須編寫為單獨(dú)的 XML 元素。
第一條規(guī)則強(qiáng)制所有記錄器將具有調(diào)試日志和更高嚴(yán)重性日志的日志寫入名為 all_logs_file 的目標(biāo)。
第二條規(guī)則強(qiáng)制所有記錄器將警告和更高嚴(yán)重性的日志寫入名為 important_logs_file 的目標(biāo)。
第三條規(guī)則強(qiáng)制所有記錄器將應(yīng)用程序生成的所有日志寫入控制臺(tái)。
4)為項(xiàng)目場(chǎng)景創(chuàng)建類:
我們將使用 2 個(gè)額外的類來(lái)展示如何使用我們的日志記錄配置。
為類創(chuàng)建一個(gè)新文件,如圖 1–4–1 所示;可以通過(guò)右鍵單擊項(xiàng)目“添加”>“新項(xiàng)”在打開(kāi)的窗口中選擇 C# 類,也可以按 CTRL + SHIFT + A 添加類。
第一個(gè)文件將包含一個(gè) Person 類。您可以在圖 1–4–2 中看到代碼片段。
第二個(gè)文件將包含 Product 類。您可以在圖 1–4–3 中看到代碼片段。
我們可以將對(duì)象分解為具有“@”解構(gòu)運(yùn)算符的值的屬性,如圖 1-4-2 和圖 1-4-3 所示。
5)使用記錄器記錄:
我們將記錄一些應(yīng)用程序消息來(lái)演示記錄器的工作原理,每個(gè)級(jí)別至少一個(gè)。NLog API 對(duì)于此類任務(wù)非常有用。
在我們的項(xiàng)目中,NLog 記錄器提供了 6 種日志記錄方法:Trace、Info、Warn、Debug、Error 和 Fatal。
如圖 1–5–1 所示,我們的應(yīng)用程序現(xiàn)在已準(zhǔn)備好寫入一些日志?,F(xiàn)在,讓我們構(gòu)建并運(yùn)行程序以查看結(jié)果。
執(zhí)行后,控制臺(tái)的輸出應(yīng)如圖 1–5–2 所示。
現(xiàn)在,讓我們檢查寫入文件中的日志。如圖 1–5–3 所示,這些文件位于 C:\\logs 中。
首先,檢查您的important.json文件,它應(yīng)該如圖 1–5–4 所示。
然后,檢查您的all.json文件,它應(yīng)該如圖 1–5–5 所示。
恭喜!所有步驟都成功完成!現(xiàn)在,你已使用 NLog 為 .NET 控制臺(tái)應(yīng)用程序配置了具有多個(gè)日志記錄目標(biāo)的日志記錄系統(tǒng)。
以上就是C#中使用NLog庫(kù)進(jìn)行日志記錄的流程詳解的詳細(xì)內(nèi)容,更多關(guān)于C# NLog日志記錄的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#編程實(shí)現(xiàn)連接SQL SERVER數(shù)據(jù)庫(kù)實(shí)例詳解
這篇文章主要介紹了C#編程實(shí)現(xiàn)連接SQL SERVER數(shù)據(jù)庫(kù)的方法,以實(shí)例形式較為詳細(xì)的分析了C#連接SQL SERVER數(shù)據(jù)庫(kù)的相關(guān)步驟與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-11-11C#動(dòng)態(tài)對(duì)象(dynamic)詳解(實(shí)現(xiàn)方法和屬性的動(dòng)態(tài))
下面小編就為大家?guī)?lái)一篇C#動(dòng)態(tài)對(duì)象(dynamic)詳解(實(shí)現(xiàn)方法和屬性的動(dòng)態(tài))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02C#控制臺(tái)帶參數(shù)程序源碼編寫實(shí)例講解
像ipconfig /all 這樣的CMD命令想必大家都知道,但是很多童鞋可能不知道怎么寫這樣的控制臺(tái)帶參數(shù)的程序,需要的朋友可以了解下2012-12-12C#程序調(diào)用C++動(dòng)態(tài)庫(kù)(dll文件)遇到的坑及解決
這篇文章主要介紹了C#程序調(diào)用C++動(dòng)態(tài)庫(kù)(dll文件)遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08結(jié)構(gòu)體和聯(lián)合體的區(qū)別及說(shuō)明
文章主要介紹了C語(yǔ)言中的結(jié)構(gòu)體和聯(lián)合體,結(jié)構(gòu)體是一種自定義的復(fù)合數(shù)據(jù)類型,可以包含多個(gè)成員,每個(gè)成員可以是不同的數(shù)據(jù)類型,聯(lián)合體是一種特殊的數(shù)據(jù)結(jié)構(gòu),可以在內(nèi)存中共享同一段存儲(chǔ)空間來(lái)存儲(chǔ)不同類型的數(shù)據(jù)2025-01-01