NLog文章系列 如何優化日誌效能

2022-02-01 19:47:07 字數 1192 閱讀 5420

翻譯:crazycoder(由衷感謝他的熱心!!)

原文:更多關於nlog的中文文章,請參考《nlog文章系列》。

概述

日誌的記錄有時也要化為頗為可觀的時間。本文的目的就是揭開日誌記錄的內部機理並提供一些有用的技巧幫助使用者優化日誌記錄的效能。

日誌記錄過程分析

每條日誌資訊的記錄都需要經過一系列的步驟才能完成,其中包括諸如檢查訊息是否需要被記錄以及輸出到**等。每一條日誌的記錄都包括以下這些操作:

準備日誌引數。這是由(.net/mono)的公共語言執行時完成的,通常由於一些內部的裝箱和陣列的操作會導致一些效能上的損失。

日誌引數準備好以後就可以呼叫相應的日誌方法(debug(), info(), warn(), error(), fatal()orlog())。

日誌方法以極快的速度檢查該日誌在該級別的輸出是否已經被允許。由於使用了合適的資料結構,這一操作的速度很快。

即使成功通過上一步的檢查,日誌訊息還是有可能不會被記錄 – 過濾器的檢查不通過的話訊息就會被拒絕記錄。注意,這一步可能很耗時。

經過上述幾個操作,日誌訊息被允許記錄了 – 這是要根據訊息和傳遞給日誌記錄方法的引數對訊息進行格式化。由於string.format並不快,這一操作可能會很慢。

最後一步就是把日誌傳送給乙個或多個需要寫入的輸出目標。這通常是最慢的乙個操作,主要是因為寫入的目標通常是一些永續性的儲存(檔案,資料庫)裝置,向這些裝置寫入資料很花時間。

「太糟糕了

…」,這可能是你現在的想法吧。不過幸運的是nlog提供了許多程式設計方面的機制來給日誌記錄提速。

效能優化技巧

快取日誌記錄者

一旦通過呼叫logmanager.getlogger()方法得到了需要的日誌記錄者,最好的做法是能夠把它儲存在什麼地方,這樣就可以重複使用同乙個例項而不需要再次呼叫logmanager.getlogger()。給類宣告乙個靜態的成員是個不錯的辦法,下面就是乙個例子:

using nlog;
class myclass
}

todo: add more tips here

seo如何優化文章

很多態別的 都不可避免的需使用文章內容來做排名,作為seo行業人員該如何優化文章是當前面臨的,一直面臨的問題。內容為王的說法一直不過時,合適的文章內容是白帽seo工作的重中之重。很多朋友堅持寫原創文章,發現自己所寫的文章排名靠後,且幾乎不能為 帶來實際的流量,這是乙個普遍的問題,為什麼有這樣的結論?...

seo如何優化文章 知識交流 seo如何優化文章?

很多朋友堅持寫原創文章,發現自己所寫的文章排名靠後,且幾乎不能為 帶來實際的流量,這是乙個普遍的問題,為什麼有這樣的結論?那就是我們普通人所認為的高質量文章內容,與搜尋引擎判定的高質量文章內容,是相駁的,也就是說 我們所認為的高質量內容,在搜尋引擎看來,是沒有價值的。通過以上分析,我們可以得出乙個結...

如何保證日誌的準確性?

1 開發一套web版的日誌系統,只要有網路就可以填寫日誌,無論是否出差在外。2 日誌系統要操作最簡單,員工天天用,操作煩瑣了,就沒有員工願意用了。3 日誌系統能自動提醒沒有按時提交日誌的人員,如果靠qa人員或者pm天天去檢查,容易遺漏,也太累啊。4 日誌系統能自動檢查有錯誤傾向的日誌,定義幾條啟發規...