#pragma once #include #define LOG_FILE_PATH _T("C:\\LogFile\\") #define MAX_STRING_SIZE 256 //UNICODE ±âÁØ typedef struct _DITLOG { int nLogID; unsigned int nLevel; unsigned int nProcess; SYSTEMTIME nCurTime; TCHAR logMessage[MAX_STRING_SIZE]; } DITLOG,*PDITLOG; #define ONE_LOG_SIZE sizeof(DITLOG) //(level+¹®ÀÚ¿­*2) BYTE ±âÁØ #define SHARED_LOG_COUNT 10000 #define DIT_MAP_SIZE 1024*64 //À妽º+¸í·ÉÇ÷¡±×+(level+¹®ÀÚ¿­)*Å¥°¹¼ö+(¸Ê»çÀÌÁî*64) #define SHAREDMEM_SIZE 4+4+ONE_LOG_SIZE*SHARED_LOG_COUNT+DIT_MAP_SIZE class AFX_EXT_CLASS CLogManager { unsigned int m_nProcessID; int m_nLogID; HANDLE m_hFMap; //À妽º¿Í Ä¿¸Çµå¸¦ Á¦¿ÜÇÑ °øÀ¯¸Þ¸ð¸® ½ÃÀÛ Æ÷ÀÎÆ® char* m_pSharedMem; HANDLE m_csMemoryMap; CRITICAL_SECTION m_csLocalLogFile; //¾à 1000ÀÏ(3³â) »ç¿ë°¡´ÉÇÑ À妽º unsigned int* m_nIndex; unsigned char* m_Command1; //mapÀúÀå Ç÷¡±× TCHAR m_TempLog[512]; public: unsigned int GetProcessID(){return m_nProcessID;}; int GetLogID(){return m_nLogID;}; void GetFirstCommand(unsigned char* pCommand); void SetFirstCommand(unsigned char Command); int GetIndex(){ return *m_nIndex;}; void SetMapData(char* pData) {memcpy(m_pSharedMem+ONE_LOG_SIZE*SHARED_LOG_COUNT,pData,DIT_MAP_SIZE);}; char* GetMapDataAddress(){ return m_pSharedMem+ONE_LOG_SIZE*SHARED_LOG_COUNT;}; //°øÀ¯¸Þ¸ð¸®¿¡ ·Î±× ÀÛ¼º, ·Î±×·¹º§°ú ·Î±× ³»¿ë ÀÛ¼º void WriteLog( unsigned int Level, TCHAR* str,...); //·ÎÄà Çϵ忡 ·Î±× ÀÛ¼º void WriteLocalLog(TCHAR* str,...); //°øÀ¯¸Þ¸ð¸®ÀÇ ·Î±×¸¦ Àоî¿Â´Ù. void ReadLog(TCHAR* str, unsigned int curIndex, int* curLogID, unsigned int* curLevel,unsigned int* curProcess, PSYSTEMTIME curTime); CLogManager(int LogID, TCHAR* NameOfMemoryMap, unsigned int ProcessID = 0);//ProcessID ¿¹¾à¿µ¿ª ~CLogManager(void); void SaveBinary(TCHAR* FilePath); };