1、需求
需求很簡單,就是在C#開發(fā)中高速寫日志。比如在高并發(fā),高流量的地方需要寫日志。我們知道程序在操作磁盤時是比較耗時的,所以我們把日志寫到磁盤上會有一定的時間耗在上面,這些并不是我們想看到的。
2、解決方案
2.1、簡單原理說明
使用列隊先緩存到內(nèi)存,然后我們一直有個線程再從列隊中寫到磁盤上,這樣就可以高速高性能的寫日志了。因為速度慢的地方我們分離出來了,也就是說程序在把日志扔給列隊后,程序的日志部分就算完成了,后面操作磁盤耗時的部分程序是不需要關(guān)心的,由另一個線程操作。
俗話說,魚和熊掌不可兼得,這樣會有一個問題,就是如果日志已經(jīng)到列隊了這個時候程序崩潰或者電腦斷電都會導(dǎo)致日志部分丟失,但是有些地方為了高性能的寫日志,是否可以忽略一些情況,請各位根據(jù)情況而定。