本文參考連接html
框架選擇:NLog數據庫
安裝方法,Nuget命令行:Install-Package NLog
緩存
e.Message
僅爲異常描述,e.ToString()
能夠打印異常堆棧。======= app start =======
,方便快速定位信息。Console.WriteLine()
,效率低。autoReload="true"
:配置修改是否自動加載。throwExceptions="false"
:日誌出現異常時是否須要拋出異常,若配置爲true日誌記錄異常時因爲沒有捕獲異常,會致使程序掛掉。internalLogLevel=Debug
:表示nlog日誌的執行日誌記錄等級,開發過程當中配置爲Debug,上線後配置爲Info。internalLogFile
:表示nlog日誌的執行日誌記錄的位置。經過./XXXX的方式能夠配置到程序的相對目錄。日誌一概保存到./Logs/日期/進程名.logaasync=true
:異步保存日誌,從而防止日誌影響業務性能。Level | FirstCharacter | Ordinal |
---|---|---|
Trace | T | 0 |
Debug | D | 1 |
Info | I | 2 |
Warn | W | 3 |
Error | E | 4 |
Fatal | F | 5 |
Off | O | 6 |
經過NLog.LogManager.GetLogger咱們能夠獲取一個日誌對象示例。傳入的參數爲日誌實例名,咱們能夠在日誌名中經過${logger}參數輸出日誌實例名。能夠將不一樣的日誌保存到不一樣的文件。網絡
NLog經過target配置日誌輸入的目標。能夠經過配置多個target將日誌輸入到多個目錄,多個目標(文件,網絡,數據庫等)。如經過設置2個目標,將info和error日誌分開保存。其中不少參數是共用的,咱們能夠設置一個默認參數default-target-parameters,減小配置文件節點。 併發
xsi:type
:輸入類型:app
name
:目標的名字,能夠經過建立Rule規則限制目標的輸出。 filename
:文件名,日誌保存文件時能夠保存到該文件中。文件名支持參數化,經過各類參數更方便的輸出日誌。 archiveFileName
:爲了防止日誌文件保存的太大,咱們將日誌文件拆分保存。經過archiveFileName參數設置保存格式,具體格式能夠到這裏查看。 createDirs
:若設置的日誌文件夾不存在,則自動建立文件夾。 keepFileOpen
:爲了提升文件寫入性能,避免每次寫入文件都開關文件,將keepFileOpen
設置爲true,咱們經過openFileCacheTimeout
參數定時關閉文件。 autoFlush
:爲了提升日誌寫入性能,沒必要每次寫入日誌都直接寫入到硬盤上,將autoFlush
設置爲false,咱們經過openFileFlushTimeout
參數定時寫入文件。 openFileCacheTimeout
:將keepFileOpen
參數設置爲false,則設置定時關閉日誌。防止日誌一直開着佔用着。 openFileFlushTimeout
:將autoFlush
參數設置爲false,則設置定時將日誌從緩存寫入到硬盤時間。 archiveAboveSize
:爲了防止一個文件日誌太大,咱們須要根據指定大小將日誌拆文件保存。archiveAboveSize
參數的單位是字節。經過設置爲10240=10KB,每一個日誌大小達到10KB就會自動拆分文件,拆分後的文件名規則經過archiveFileName
設置,拆分文件名的規則經過archiveNumbering
設置,具體規則能夠查看這裏。 concurrentWrites
:支持多個併發一塊兒寫文件,提升文件寫入性能。 encoding
: Nlog默認保存的編碼格式爲Encoding.Default,中文保存到日誌中會出現亂碼,將其設置爲utf-8,就能夠正常保存了。layout
:表示輸出的格式,若爲最簡單的內容輸入,則直接經過參數設置輸入格式便可。除了最簡單的文本格式還支持如下四種類型的數據,經過xsi:type
參數設置layout的格式,如xsi:type="JsonLayout"
:框架
咱們能夠建立一系列規則約束輸出的內容。方法是在NLog節點下添加rules節點,rules節點下能夠添加多個logger節點,每一個logger節點爲一條約束。異步
<rules> <logger name="*" minlevel="Debug" writeTo="file" /> </rules>