導(dǎo)讀
我們?cè)陂_(kāi)發(fā)中經(jīng)常需要記錄程序或系統(tǒng)的操作狀態(tài)以及追蹤執(zhí)行過(guò)程,以便快速的定位問(wèn)題。 NLog是一個(gè)靈活且免費(fèi)的日志平臺(tái),適用于各種.NET平臺(tái),包括.NET標(biāo)準(zhǔn)。NLog可寫(xiě)入多個(gè)目標(biāo)(數(shù)據(jù)庫(kù)、文件、控制臺(tái)等),并即時(shí)更改日志記錄配置。 NLog支持結(jié)構(gòu)化和傳統(tǒng)的日志記錄,其主要特點(diǎn)有高性能、易于使用、易于擴(kuò)展和靈活配置。 NLog官網(wǎng)地址:https://nlog-project.org/ NLog參考文檔:https://github.com/NLog/NLog/wiki本期小百科介紹在C#編程時(shí)如何使用NLog來(lái)打印日志。
NLog的主要功能
1.配置簡(jiǎn)單
NLog無(wú)論是通過(guò)配置文件還是以編程方式,配置都非常簡(jiǎn)單。即使不重新啟動(dòng)應(yīng)用程序,也可以更改配置。2.可模板化
Nlog每條日志都可以使用各種布局渲染進(jìn)行模板化。3.可拓展性
NLog 本身就自帶數(shù)種數(shù)據(jù)記錄的對(duì)象與數(shù)據(jù)輸出的格式,不僅如此,還提供可自定義的數(shù)據(jù)記錄目標(biāo)與數(shù)據(jù)輸出格式。4.結(jié)構(gòu)化日志記錄
NLog完全支持結(jié)構(gòu)化日志記錄并處理消息模板和自定義日志事件屬性。5.可拓展Microsoft日志記錄
NLog可以與Microsoft Extensible Logging(和ASP.NET Core)完全集成,而無(wú)需替換標(biāo)準(zhǔn)的 Microsoft LoggerFactory。NLog自動(dòng)捕獲LogEvent屬性,并可以在結(jié)構(gòu)化日志目標(biāo)輸出中使用它們。6.appsettings.json
NLog配置可以從appsettings.json加載,作為NLog.config XML文件的替代方案。也可以使用 appsettings.json中的值和${configsetting}來(lái)配置NLog目標(biāo)。7.支持多種記錄跟蹤信息的目標(biāo)(target)
1)文件;
2)事件日志;
3)數(shù)據(jù)庫(kù);
4)文本控制臺(tái);
5) E-mail;
6)調(diào)試器輸出;
7)還有一些包裝器目標(biāo)可以提供緩沖、負(fù)載平衡、故障轉(zhuǎn)移情況、異步寫(xiě)入和許多其他場(chǎng)景等。
在配置選項(xiàng)頁(yè)面上提供了完整的目標(biāo)列表。如果沒(méi)有找到滿足需求的目標(biāo),用戶(hù)可以很容易地編寫(xiě)一個(gè)定制的目標(biāo)。8.支持多平臺(tái),例如
1) .NET 5 & 6 (.NET Standard 2.0);
2) .NET Framework 3.5 - 4.8;
3) .NET Core 1.0 - 3.1;
4) Xamarin Android + iOS (.NET Standard);
5) UWP (.NET Standard);
6) Mono 4;
7) ASP.NET Core (NLog.Web.AspNetCore package);
8) ASP.NET Classic (NLog.Web package)等。
NLog安裝
1. 在Visual Studio中,可以通過(guò)NuGet下載安裝NLog插件。選中項(xiàng)目名稱(chēng),右鍵后點(diǎn)擊“管理NuGet程序包”(如圖1),即可進(jìn)入NuGet管理器。
圖 1點(diǎn)擊“管理NuGet程序包”
2. 點(diǎn)擊瀏覽,在搜索框中搜索“NLog”,分別安裝圖2中“Nlog”和“NLog.Config”,點(diǎn)擊名稱(chēng)右側(cè)的黑色箭頭進(jìn)行安裝。
圖 2安裝“Nlog和NLog.Config”
NLog示例
使用USB-61902進(jìn)行單通道有限點(diǎn)采集,采樣率設(shè)置為10000(Sa/s),采樣點(diǎn)數(shù)設(shè)置為20000,分別記錄啟動(dòng)采集和結(jié)束采集的時(shí)刻。
1.首先在代碼頂端添加using2.點(diǎn)擊項(xiàng)目中“NLog.config”
項(xiàng)目引入NLog.Config之后,會(huì)自動(dòng)添加一個(gè)NLog.Config配置文件,程序運(yùn)行的時(shí)候,會(huì)自動(dòng)加載NLog.Config作為Nlog的配置。
打開(kāi)該XML文件,其中有詳細(xì)說(shuō)明,targets配置輸出目標(biāo),rules配置路由規(guī)則。
1)全局配置這是NLog.config的默認(rèn)配置,一般不需要更改,其中 autoReload:設(shè)置修改配置文件后是否允許自動(dòng)加載無(wú)須重啟程序;
- autoReload:設(shè)置修改配置文件后是否允許自動(dòng)加載無(wú)須重啟程序;
- throwExceptions:內(nèi)部日志系統(tǒng)拋出異常;
- internalLogLevel:可選Trace/Debug/Info/Warn/Error/Fatal決定內(nèi)部日志的級(jí)別,Off為關(guān)閉;
- internalLogFile:把內(nèi)部的調(diào)試和異常信息都寫(xiě)入指定文件里
2)targets定義日志的輸出目標(biāo)
targets中是對(duì)輸出目標(biāo)的配置,需要配置名稱(chēng)、輸出類(lèi)型、內(nèi)容格式等,其中
-
name是設(shè)置輸出目標(biāo)的名稱(chēng);
-
xsi:type是設(shè)置輸出類(lèi)型,其中File是文件類(lèi)型;
-
fileName是設(shè)置輸出文件路徑,其中${basedir}是相對(duì)路徑,/logs是生成文件夾并命名為logs,${shortdate}.log是以年月日日期生成log文件名稱(chēng);
-
layout是設(shè)置生成內(nèi)容的格式,其中${longdate}是返回長(zhǎng)時(shí)間格式,${uppercase:${level}}是返回當(dāng)前日志的等級(jí),${message}是用戶(hù)設(shè)置的信息。
3)rules定義對(duì)日志信息的路由規(guī)則
rules中是對(duì)日志路由順序的配置,可以將日志分不同級(jí)別進(jìn)行輸出,不同級(jí)別的日志代表日志的重要程度,比如一些debug級(jí)別的日志在生產(chǎn)環(huán)境就會(huì)被控制不輸出,以減少日志文件的大小。
-
minlevel是設(shè)置日志的最小等級(jí),Debug是日志等級(jí)中的一種
-
writeTo是設(shè)置日志輸出到target的目標(biāo),f為targets中配置的目標(biāo)名稱(chēng);
備注:日志級(jí)別有如下各種
a) Trace:最常見(jiàn)的記錄信息,一般用于普通輸出;
b) Debug:同樣是記錄信息,不過(guò)出現(xiàn)的頻率要比Trace少一些,一般用來(lái)調(diào)試程序;
c) Info:信息類(lèi)型的消息;
d) Warn:警告信息,一般用于比較重要的場(chǎng)合;
e) Error:錯(cuò)誤信息;
f) Fatal:致命異常信息。一般來(lái)講,發(fā)生致命異常之后程序?qū)o(wú)法繼續(xù)執(zhí)行。
3. 完成對(duì)“NLog.config”的配置后,就可以在C#程序中直接完成對(duì)NLog的調(diào)用。
修改USB-61902單通道有限點(diǎn)采集范例。1)在aiTask開(kāi)始任務(wù)時(shí),打印日志記錄下時(shí)間,參考代碼如下:
2)在aiTask停止任務(wù)時(shí),打印日志記錄下時(shí)間,參考代碼如下:
4. 運(yùn)行程序后,即可在文件夾中查看到打印的日志信息,如圖3:
-
net
+關(guān)注
關(guān)注
0文章
125瀏覽量
56164 -
開(kāi)源
+關(guān)注
關(guān)注
3文章
3309瀏覽量
42471 -
日志
+關(guān)注
關(guān)注
0文章
138瀏覽量
10639
原文標(biāo)題:測(cè)量小百科 | NLog靈活免費(fèi)的.NET開(kāi)源日志記錄
文章出處:【微信號(hào):簡(jiǎn)儀科技,微信公眾號(hào):簡(jiǎn)儀科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論