使用NLog的最佳實踐

2022-02-15 02:17:00 字數 1380 閱讀 4935

1. logger應該在每個類中初始化為靜態

建立乙個新的logger類是有有開銷的,因為它需要獲取一些鎖和分配物件和記憶體。

namespace mynamespace

}

2. 應該讓logger處理字串格式化

避免提前執行字串分配或字串連線,而是讓logger來完成字串格式化。這會允許nlog推遲格式化和減少格式化的開銷。

logger.info("hello ", "earth");

3. logger應該將異常當引數傳入

避免將異常當格式化引數傳入,而是將異常當第乙個引數顯示傳入。這將幫助nlog 目標提供更完整和更好的日誌內容.

推薦

trycatch (exception ex)

避免

try

catch (exception ex)

4. 驗證nlog.config檔案的xml配置格式

nlog缺省會隱藏所有異常,這樣有問題的日誌不會導致程式崩潰。但是對很多程式來說,日誌要求是非常嚴格的,所以如果初始化nlog配置失敗,那麼就把這個當個災難性的事故。

新增throwconfigexceptions="true"使nlog在配置有錯誤的時候報錯。

<?xmlversion="1.0"encoding="utf-8" ?>

xmlns:xsi=""

throwconfigexceptions="true">

nlog>

另外還有乙個throwexceptions="true", 這個不能在生產環境中使用,因為這個會在寫日誌的時候報錯,可能會給你們的程式帶來災難。這個應該使用為單元測試和本地除錯使用,詳情參見 troubleshooting configuration

5. 記得重新整理輸出到檔案

nlog缺省會在程式關閉的時候自動重新整理到檔案。微軟windows系統給.net程式一小點時間來在程式被完全終止前處理關閉(通常是2s)。如果乙個nlog配置的nlog目標需要使用網路通訊(http, mail, tcp), 那麼在linux/windows上手動執行乙個重新整理/關閉操作是乙個更好的選擇。

nlog.logmanager.shutdown(); // 重新整理並關閉內部的執行緒和計時器

在mono/linux上執行的.net程式要求在進入關閉階段之前關閉所有執行緒和計時器。如果沒有完成這個,那麼會導致未處理的異常和段錯誤,和其他不可預知的行為。

6. 非同步寫日誌

如果要啟用非同步寫日誌,只需要配置新增 async="true"

使用 localStorage 的最佳實踐

localstorage 是 html5 規範中作為持久化儲存客戶端資料的方案,localstorage 可以用於資料快取,日誌儲存等應用場景。由於 localstorage 本身的一些特性 使用好 localstorage 並沒有那麼簡單,本文主要介紹其使用的一些最佳實踐。由於瀏覽器對於新特性支援...

最佳實踐 Flutter 最佳實踐

最佳實踐是乙個領域可以接受的專業標準,對於任何程式語言來說,提高 質量 可讀性 可維護性和健壯性都非常重要。讓我們探索一些設計和開發flutter應用程式的最佳實踐。class enum typedef和extension應採用駝峰命名uppercamelcase規則。class mainscree...

nlog官方幫助 NLog的介紹使用

nlog是什麼 nlog是乙個基於.net平台編寫的類庫,我們可以使用nlog在應用程式中新增極為完善的跟蹤除錯 nlog是乙個簡單靈活的.net日誌記錄類庫。通過使用nlog,我們可以在任何一種.net語言中輸出帶有上下文的 contextual information 除錯診斷資訊,根據喜好配置...