日志記錄是用于故障排除和維護(hù)軟件系統(tǒng)的關(guān)鍵技術(shù)。Petru提供了一種類型安全,線程安全和可移植的C ++日志框架。
日志記錄是用于故障排除和維護(hù)軟件系統(tǒng)的關(guān)鍵技術(shù)。要獲取它所提供的信息也十分簡(jiǎn)單,既不要求具備編程語(yǔ)言的知識(shí),也不需要專用工具。日志是一個(gè)判斷應(yīng)用程序是否正常運(yùn)行的有效手段。良好的日志機(jī)制可以有效節(jié)省調(diào)試時(shí)間,并大大提高應(yīng)用程序的可維護(hù)性
在本文中,我將介紹一個(gè)簡(jiǎn)單但非常有用的日志框架,它是類型安全,線程安全(行級(jí)),高效,可移植,細(xì)粒度,緊湊和靈活的。它能在Sun或其他平臺(tái)上使用Visual C ++ 7.1,g ++ 3.3.5和CC 5.3編譯。完整源代碼可以在www.ddj.com/code/下的DDJ October 2007 zip文件中找到。
在本文的第2部分,我會(huì)通過提供更多的粒度來(lái)增強(qiáng)這種技術(shù)。
The First Step 第一步
讓我們對(duì)Log類中進(jìn)行第一次刺探。 清單1使用名為“os”的std :: ostringstream成員變量來(lái)累積記錄的數(shù)據(jù)。 Get()成員函數(shù)提供對(duì)該變量的訪問。 所有數(shù)據(jù)格式化后,Log的析構(gòu)函數(shù)將輸出保存為標(biāo)準(zhǔn)錯(cuò)誤。 你像這樣使用Log類:
Log().Get(logINFO) << "Hello " << username;
&