标签:style blog io color ar os sp for div
1 #include<iostream> 2 #include<windows.h> 3 #include <MMSystem.h> 4 #pragma comment(lib, "winmm.lib") 5 #include<time.h> 6 #include<stdint.h> 7 using namespace std; 8 9 #define MAX_LOG_FILE_SIZE 0x4000000 //64MB 10 11 class CTimer{ 12 public: 13 CTimer() 14 { 15 m_tickCount = 0; 16 } 17 ~CTimer() 18 { 19 if(m_timerID) 20 { 21 timeKillEvent(m_timerID); 22 } 23 } 24 static void CALLBACK TimerCallBack(UINT uTimeID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2); 25 void OnTimer(); 26 void Log(const char* fmt,...); 27 28 protected: 29 void Call() 30 { 31 Log("tick...%d",m_tickCount); 32 ++m_tickCount; 33 } 34 void print_format_time(FILE* fileName); 35 36 private: 37 MMRESULT m_timerID; 38 int m_tickCount; 39 }; 40 41 void CALLBACK CTimer::TimerCallBack(UINT uTimeID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2) 42 { 43 CTimer *_ctimer = (CTimer*)dwUser; 44 _ctimer->Call(); 45 } 46 47 void CTimer::OnTimer() 48 { 49 timeSetEvent(1000,1,(LPTIMECALLBACK)TimerCallBack,(DWORD)this,TIME_PERIODIC); 50 } 51 52 void CTimer::print_format_time(FILE* fileName) 53 { 54 SYSTEMTIME _sysTime; 55 GetLocalTime(&_sysTime); 56 57 fprintf(fileName,"%04d-%02d-%02d %02d:%02d:%02d.%06d ",_sysTime.wYear, 58 _sysTime.wMonth,_sysTime.wDay,_sysTime.wHour,_sysTime.wMinute,_sysTime.wSecond,_sysTime.wMilliseconds); 59 } 60 61 void CTimer::Log(const char* fmt,...) 62 { 63 static int file_no(0); 64 static FILE* log_fp = NULL; 65 if(log_fp == NULL) 66 { 67 char log_name[64]; 68 uint32_t pid; 69 pid = (uint32_t)GetCurrentProcessId(); 70 sprintf_s(log_name,64,"log_%d_%d.txt",pid,file_no); 71 fopen_s(&log_fp,log_name,"w"); 72 if(!log_fp) 73 return; 74 } 75 print_format_time(log_fp); 76 77 va_list ap; 78 va_start(ap,fmt); 79 vfprintf_s(log_fp,fmt,ap); 80 va_end(ap); 81 fflush(log_fp); 82 fprintf(log_fp,"\n"); 83 if(ftell(log_fp) > MAX_LOG_FILE_SIZE) 84 { 85 fclose(log_fp); 86 log_fp = NULL; 87 ++file_no; 88 } 89 90 } 91 92 int main(int argc, char* argv[]) 93 { 94 CTimer _timer; 95 _timer.OnTimer(); 96 system("pause"); 97 return 0; 98 }
标签:style blog io color ar os sp for div
原文地址:http://www.cnblogs.com/felove2013/p/4081818.html