乙個簡單的Log類

2022-08-20 09:24:16 字數 1369 閱讀 5539

經常在執行程式時需要在某些地方記錄log,之前想用log4net,但又感覺要附帶乙個dll,想要只帶乙個exe檔案執行,乾脆自己寫個簡單的類了。

需要滿足的條件:被多個執行緒呼叫;時間的準確性不重要,知道先後關係就行;不想阻塞執行緒,畢竟幹活才是主要目的,為了不太在意時間的log而阻塞等待有點不划算。

然後開始:1.需要靜態類,預設儲存在當前目錄下,可指定log檔名;2.需要乙個用來寫入到檔案的方法。

public

static

class

logwriter

}}

然後,直接寫的話會存在同時訪問的問題,在不使用鎖進行阻塞的前提下,這裡使用兩個list儲存訊息佇列,並用乙個bool變數uselist1來標識當前儲存到的list,當儲存list1的時候,建立執行緒將list2中的內容寫入到log並清除list2中的訊息,然後取反uselist1,將訊息儲存到list2佇列,此時將list1中的訊息寫入log並清除list1中的訊息,最後檢查list1和list2中是否還有訊息,如果有則繼續寫入。

static list list1 = new list();

static list list2 = new list();

static

bool uselist1 = false

;static

bool isused = false

;public

static

void writeline(string str) //

將訊息放進list中

else

if (!isused) //

如果沒開啟執行緒,則開啟執行緒

}private

static

void writelist() //

將list中的訊息寫入log

else

isclear();

//檢查在寫入log期間是否有新增訊息,如果有則繼續寫

isused = false

; }

private

static

void write(list list) //

將list中的訊息寫入log檔案

}public

static

void isclear() //

檢查是否list1和list2中是否還有訊息未寫入

}

實踐發現寫log頻率高的時候的確log訊息會滯後幾秒,應該是頻繁建立執行緒和頻繁的開啟和關閉檔案造成的。可以建立乙個執行緒等待訊息,增加乙個list計數,當list中訊息達到一定數量的時候再開啟檔案寫入log,減少檔案的開啟和操作次數,不過對於只是偶爾看看狀態用的log,不折騰了。。。

VC 乙個簡單的Log類

在軟體開發中,為程式建立log日誌是很必要的,它可以記錄程式執行的狀態以及出錯資訊,方便維護和除錯。下面實現了乙個簡單的log類,使用非常簡單,僅供參考。cloghelper.h header file for log information pragma once class cloghelper...

乙個Log的工具類

由於專案是屬於專項定製,在私有網路中執行,有一天突然說程式出問題了,現場沒有自己人,無法定位問題,一臉蒙蔽。因為專案可以把崩潰日誌儲存到檔案,於是想把log日誌儲存一下,以便方便定位。public class logutils 判斷log檔案大小,file myfile new file logpa...

乙個簡單的矩陣類

原 核心部分來自 的 我在其基礎上做了一點改動,加上了一些運算,同時也發現了 的一點小問題。類是基於stl裡的valarray的,因為主要是用來演示演算法用的,所以沒有對效率做過多的考慮。valarray 本身給我們提供了很多方便的運算,因為,我基本都是用的valarray的演算法,沒有重寫。不過,...