導讀
我們在開發中經常需要記錄程序或系統的操作狀態以及追蹤執行過程,以便快速的定位問題。 NLog是一個靈活且免費的日志平臺,適用于各種.NET平臺,包括.NET標準。NLog可寫入多個目標(數據庫、文件、控制臺等),并即時更改日志記錄配置。 NLog支持結構化和傳統的日志記錄,其主要特點有高性能、易于使用、易于擴展和靈活配置。 NLog官網地址:https://nlog-project.org/ NLog參考文檔:https://github.com/NLog/NLog/wiki
NLog的主要功能
1.配置簡單
NLog無論是通過配置文件還是以編程方式,配置都非常簡單。即使不重新啟動應用程序,也可以更改配置。2.可模板化
Nlog每條日志都可以使用各種布局渲染進行模板化。3.可拓展性
NLog 本身就自帶數種數據記錄的對象與數據輸出的格式,不僅如此,還提供可自定義的數據記錄目標與數據輸出格式。4.結構化日志記錄
NLog完全支持結構化日志記錄并處理消息模板和自定義日志事件屬性。5.可拓展Microsoft日志記錄
NLog可以與Microsoft Extensible Logging(和ASP.NET Core)完全集成,而無需替換標準的 Microsoft LoggerFactory。NLog自動捕獲LogEvent屬性,并可以在結構化日志目標輸出中使用它們。6.appsettings.json
NLog配置可以從appsettings.json加載,作為NLog.config XML文件的替代方案。也可以使用 appsettings.json中的值和${configsetting}來配置NLog目標。7.支持多種記錄跟蹤信息的目標(target)
1)文件;
2)事件日志;
3)數據庫;
4)文本控制臺;
5) E-mail;
6)調試器輸出;
7)還有一些包裝器目標可以提供緩沖、負載平衡、故障轉移情況、異步寫入和許多其他場景等。
在配置選項頁面上提供了完整的目標列表。如果沒有找到滿足需求的目標,用戶可以很容易地編寫一個定制的目標。8.支持多平臺,例如
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中,可以通過NuGet下載安裝NLog插件。選中項目名稱,右鍵后點擊“管理NuGet程序包”(如圖1),即可進入NuGet管理器。
![faadb992-2e66-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/33/wKgZomTnGa6AD5UdAACrm1ww_3U719.png)
圖 1點擊“管理NuGet程序包”
2. 點擊瀏覽,在搜索框中搜索“NLog”,分別安裝圖2中“Nlog”和“NLog.Config”,點擊名稱右側的黑色箭頭進行安裝。
![faca7d70-2e66-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/33/wKgZomTnGa6AfSP8AADJ8kxsB4E604.png)
圖 2安裝“Nlog和NLog.Config”
NLog示例
使用USB-61902進行單通道有限點采集,采樣率設置為10000(Sa/s),采樣點數設置為20000,分別記錄啟動采集和結束采集的時刻。
1.首先在代碼頂端添加using![fae4aede-2e66-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/33/wKgZomTnGa6AQtilAAACtScQ-JU340.png)
2.點擊項目中“NLog.config”
項目引入NLog.Config之后,會自動添加一個NLog.Config配置文件,程序運行的時候,會自動加載NLog.Config作為Nlog的配置。
打開該XML文件,其中有詳細說明,targets配置輸出目標,rules配置路由規則。
1)全局配置![faf64aea-2e66-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/33/wKgZomTnGa-AXltBAAApeSXDnxE439.png)
這是NLog.config的默認配置,一般不需要更改,其中 autoReload:設置修改配置文件后是否允許自動加載無須重啟程序;
- autoReload:設置修改配置文件后是否允許自動加載無須重啟程序;
- throwExceptions:內部日志系統拋出異常;
- internalLogLevel:可選Trace/Debug/Info/Warn/Error/Fatal決定內部日志的級別,Off為關閉;
- internalLogFile:把內部的調試和異常信息都寫入指定文件里
2)targets定義日志的輸出目標
![fb0da186-2e66-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/33/wKgZomTnGa-AThriAAAZ0Lo0fXs936.png)
targets中是對輸出目標的配置,需要配置名稱、輸出類型、內容格式等,其中
-
name是設置輸出目標的名稱;
-
xsi:type是設置輸出類型,其中File是文件類型;
-
fileName是設置輸出文件路徑,其中${basedir}是相對路徑,/logs是生成文件夾并命名為logs,${shortdate}.log是以年月日日期生成log文件名稱;
-
layout是設置生成內容的格式,其中${longdate}是返回長時間格式,${uppercase:${level}}是返回當前日志的等級,${message}是用戶設置的信息。
3)rules定義對日志信息的路由規則
![fb22f81a-2e66-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/33/wKgZomTnGa-APrDgAAAMZzmPJyE516.png)
rules中是對日志路由順序的配置,可以將日志分不同級別進行輸出,不同級別的日志代表日志的重要程度,比如一些debug級別的日志在生產環境就會被控制不輸出,以減少日志文件的大小。
-
minlevel是設置日志的最小等級,Debug是日志等級中的一種
-
writeTo是設置日志輸出到target的目標,f為targets中配置的目標名稱;
備注:日志級別有如下各種
a) Trace:最常見的記錄信息,一般用于普通輸出;
b) Debug:同樣是記錄信息,不過出現的頻率要比Trace少一些,一般用來調試程序;
c) Info:信息類型的消息;
d) Warn:警告信息,一般用于比較重要的場合;
e) Error:錯誤信息;
f) Fatal:致命異常信息。一般來講,發生致命異常之后程序將無法繼續執行。
3. 完成對“NLog.config”的配置后,就可以在C#程序中直接完成對NLog的調用。
修改USB-61902單通道有限點采集范例。1)在aiTask開始任務時,打印日志記錄下時間,參考代碼如下:
![fb37b002-2e66-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/33/wKgZomTnGa-AUYwwAABKcIvkqwE884.png)
2)在aiTask停止任務時,打印日志記錄下時間,參考代碼如下:
![fb574782-2e66-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/33/wKgZomTnGa-AckQYAAA1_B36FZY066.png)
4. 運行程序后,即可在文件夾中查看到打印的日志信息,如圖3:
![fb6b7a90-2e66-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/33/wKgZomTnGa-AEulnAABSwB_dlCw494.png)
-
net
+關注
關注
0文章
126瀏覽量
56258 -
開源
+關注
關注
3文章
3408瀏覽量
42720 -
日志
+關注
關注
0文章
139瀏覽量
10681
原文標題:測量小百科 | NLog靈活免費的.NET開源日志記錄
文章出處:【微信號:簡儀科技,微信公眾號:簡儀科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論