1*76af099aSliuyi #ifndef RKLOG_HEADER 2*76af099aSliuyi #define RKLOG_HEADER 3*76af099aSliuyi #include "DefineHeader.h" 4*76af099aSliuyi 5*76af099aSliuyi #define GET_FMT_STRING(fmt, buf) \ 6*76af099aSliuyi { \ 7*76af099aSliuyi va_list args; \ 8*76af099aSliuyi va_start(args, fmt); \ 9*76af099aSliuyi vsnprintf(buf, sizeof(buf)-1, fmt, args); \ 10*76af099aSliuyi va_end(args); \ 11*76af099aSliuyi buf[sizeof(buf)-1] = 0x00; \ 12*76af099aSliuyi }; 13*76af099aSliuyi 14*76af099aSliuyi class CRKLog 15*76af099aSliuyi { 16*76af099aSliuyi public: 17*76af099aSliuyi string GetLogSavePath(); 18*76af099aSliuyi bool GetEnableLog(); 19*76af099aSliuyi void SetEnableLog(bool bEnable); 20*76af099aSliuyi property<CRKLog, string, READ_ONLY> LogSavePath; 21*76af099aSliuyi property<CRKLog, bool, READ_WRITE> EnableLog; 22*76af099aSliuyi CRKLog(string logFilePath, string logFileName, bool enable = true); 23*76af099aSliuyi ~CRKLog(); 24*76af099aSliuyi bool SaveBuffer(string fileName, PBYTE lpBuffer, DWORD dwSize); 25*76af099aSliuyi void PrintBuffer(string &strOutput, PBYTE lpBuffer, DWORD dwSize, UINT uiLineCount = 16); 26*76af099aSliuyi void Record(const char *lpFmt, ...); 27*76af099aSliuyi 28*76af099aSliuyi protected: 29*76af099aSliuyi private: 30*76af099aSliuyi string m_path; 31*76af099aSliuyi string m_name; 32*76af099aSliuyi bool m_enable; 33*76af099aSliuyi bool Write(string text); 34*76af099aSliuyi }; 35*76af099aSliuyi typedef enum { 36*76af099aSliuyi STAT_NOT_EXIST = 0, 37*76af099aSliuyi STAT_FILE, 38*76af099aSliuyi STAT_DIR 39*76af099aSliuyi } ENUM_FILE_STAT; 40*76af099aSliuyi int file_stat(string strPath); 41*76af099aSliuyi #endif