1、需求
需求很簡(jiǎn)單,就是在C#開(kāi)發(fā)中高速寫(xiě)日志。比如在高并發(fā),高流量的地方需要寫(xiě)日志。我們知道程序在操作磁盤(pán)時(shí)是比較耗時(shí)的,所以我們把日志寫(xiě)到磁盤(pán)上會(huì)有一定的時(shí)間耗在上面,這些并不是我們想看到的。
2、解決方案
2.1、簡(jiǎn)單原理說(shuō)明
使用列隊(duì)先緩存到內(nèi)存,然后我們一直有個(gè)線程再?gòu)牧嘘?duì)中寫(xiě)到磁盤(pán)上,這樣就可以高速高性能的寫(xiě)日志了。因?yàn)樗俣嚷牡胤轿覀兎蛛x出來(lái)了,也就是說(shuō)程序在把日志扔給列隊(duì)后,程序的日志部分就算完成了,后面操作磁盤(pán)耗時(shí)的部分程序是不需要關(guān)心的,由另一個(gè)線程操作。
俗話說(shuō),魚(yú)和熊掌不可兼得,這樣會(huì)有一個(gè)問(wèn)題,就是如果日志已經(jīng)到列隊(duì)了這個(gè)時(shí)候程序崩潰或者電腦斷電都會(huì)導(dǎo)致日志部分丟失,但是有些地方為了高性能的寫(xiě)日志,是否可以忽略一些情況,請(qǐng)各位根據(jù)情況而定。