176af099aSliuyi #ifndef RKLOG_HEADER 276af099aSliuyi #define RKLOG_HEADER 376af099aSliuyi #include "DefineHeader.h" 476af099aSliuyi 576af099aSliuyi #define GET_FMT_STRING(fmt, buf) \ 676af099aSliuyi { \ 776af099aSliuyi va_list args; \ 876af099aSliuyi va_start(args, fmt); \ 976af099aSliuyi vsnprintf(buf, sizeof(buf)-1, fmt, args); \ 1076af099aSliuyi va_end(args); \ 1176af099aSliuyi buf[sizeof(buf)-1] = 0x00; \ 1276af099aSliuyi }; 1376af099aSliuyi 1476af099aSliuyi class CRKLog 1576af099aSliuyi { 1676af099aSliuyi public: 1776af099aSliuyi string GetLogSavePath(); 1876af099aSliuyi bool GetEnableLog(); 1976af099aSliuyi void SetEnableLog(bool bEnable); 2076af099aSliuyi property<CRKLog, string, READ_ONLY> LogSavePath; 2176af099aSliuyi property<CRKLog, bool, READ_WRITE> EnableLog; 22*bfb8da19SEddie Cai CRKLog(string logFilePath, string logFileName, bool enable = false); 2376af099aSliuyi ~CRKLog(); 2476af099aSliuyi bool SaveBuffer(string fileName, PBYTE lpBuffer, DWORD dwSize); 2576af099aSliuyi void PrintBuffer(string &strOutput, PBYTE lpBuffer, DWORD dwSize, UINT uiLineCount = 16); 2676af099aSliuyi void Record(const char *lpFmt, ...); 2776af099aSliuyi 2876af099aSliuyi protected: 2976af099aSliuyi private: 3076af099aSliuyi string m_path; 3176af099aSliuyi string m_name; 3276af099aSliuyi bool m_enable; 3376af099aSliuyi bool Write(string text); 3476af099aSliuyi }; 3576af099aSliuyi typedef enum { 3676af099aSliuyi STAT_NOT_EXIST = 0, 3776af099aSliuyi STAT_FILE, 3876af099aSliuyi STAT_DIR 3976af099aSliuyi } ENUM_FILE_STAT; 4076af099aSliuyi int file_stat(string strPath); 4176af099aSliuyi #endif 42