在項目中,使用NLog記錄日誌,這是一個很正常的操作。
目前處理的一個項目中,有8個程序執行,每個都有日誌文件;然後由一個日誌記錄會比較頻繁,每秒有接近1M的日誌記錄,而且都20次,在開發的機器上,使用SSD固態硬盤,程序執行很正常。
發佈到服務器電腦上,其上的磁盤是機械磁盤,使用的是Info
級別,發現在這樣的日誌量和頻率下,服務程序出現嚴重的問題,每次的服務響應有2秒之多;查找其他原因無果,後來把日誌的級別提高到Warn
, 然後服務的響應就正常了。
在使用NLog之前,此服務程序使用自己的文件日誌實現庫,因爲其中有使用緩存,記錄日誌沒有問題。
然後在nlog的配置文檔上看到,也可以使用<targets async="true">
來設置target的異步模式,這樣可以提高文件日誌性能。但在網絡上看到有日誌丟失的現象,應該是緩存區不足導致的。
結論: 對NLog的文件日誌,如果沒有緩存,使用機型磁盤,在大頻次和大日誌量的情況下,會對程序的性能造成極大的影響。