Posted on 2008-10-10 04:18
Fox 閱讀(1829)
評論(8) 編輯 收藏 引用
作者:Fox
本文同時發布在http://www.yulefox.com和http://www.shnenglu.com/fox。
兩個多月之前,在CPPBLOG上寫過一篇關于游戲開發中日志該怎么記錄的問題,主要該考慮的問題都已經說明,當時沒有實現這一塊。在最近一個模塊中,寫了一個非常簡單的寫日志的接口,接口的聲明大概是:
void PutoutLog(const char *szFile, const char *szLog, ...);
記錄的日志格式如下:
1 2008-10-10-03:30:10.618 | projectpath/srcfile.cpp/function(30) : 哦嚯, 這兒出錯了(eno : 0x00100000).
用到了__FILE__、__LINE__、__FUNCTION__幾個宏。
基本滿足需要了,需要改進的地方我現在能想到的主要是:
- 文件名是全路徑,沒有必要,只記錄文件名稱其實就夠了;
- 沒有考慮寫日志時的線程同步問題;
- 系統dump時的日志還是沒有辦法記錄;
- 缺少足夠的、動態的上下文信息:調用堆棧、函數參數、系統運行參數;
- 日志記錄到普通文本中,雖然記錄了時間、位置,還是不便于系統查看、查找、分析、挖掘。
說白了,這所謂的基本滿足需要只是皮毛,因為最近在打理我的個人博客站點,有感于網頁數據庫技術的博大精深、美妙直觀,如果可以把日志用網頁數據庫作為讀寫的載體,豈不甚妙?
隱約中感覺這種想法似曾相識,不識字只好亂翻書,果然在Game Programming Gems 4中發現有這樣一篇文章:一個基于HTML的日志和調試系統。有興趣的同學自己翻書吧:)。
如果將更加豐富的信息寫入xml或php文件中,加入到數據庫,可以對數據進行分析、挖掘,并友好的顯示在瀏覽器中,這對于枯燥的debug過程,起碼增添了些許益處。
然而,這又只是一個想法,或許在我手頭上的工作稍后告一段落的時候,我可以花精力研究一下這方面的東西。