1. logger應該在每個類中初始化為靜態
建立乙個新的logger類是有有開銷的,因為它需要獲取一些鎖和分配物件和記憶體。
namespace mynamespace}
2. 應該讓logger處理字串格式化
避免提前執行字串分配或字串連線,而是讓logger來完成字串格式化。這會允許nlog推遲格式化和減少格式化的開銷。
logger.info("hello ", "earth");
3. logger應該將異常當引數傳入
避免將異常當格式化引數傳入,而是將異常當第乙個引數顯示傳入。這將幫助nlog 目標提供更完整和更好的日誌內容.
推薦trycatch (exception ex)
避免
trycatch (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 除錯診斷資訊,根據喜好配置...