#include "StdAfx.h"
|
#include "DisplayMessage.h"
|
|
CDisplayMessage::CDisplayMessage(const CString& strPath)
|
{
|
m_pDM2P = NULL;
|
m_pFileLog = NULL;
|
|
SetPath(strPath);
|
|
// #3417 LYWCF AOI Review 전설비 Log Process개선 ADD START
|
DWORD dwThreadId = 0;
|
HANDLE hThread = CreateThread(NULL, 0, RunThreadDisplayLog, NULL, 0, &dwThreadId);
|
m_ThreadId = dwThreadId;
|
// #3417 LYWCF AOI Review 전설비 Log Process개선 ADD END
|
|
InitializeCriticalSection(&m_csLog);
|
}
|
|
CDisplayMessage::~CDisplayMessage(void)
|
{
|
if (m_pFileLog)
|
{
|
delete m_pFileLog;
|
m_pFileLog = NULL;
|
}
|
|
PostThreadMessage(m_ThreadId, WM_QUIT, 0, 0);
|
|
DeleteCriticalSection(&m_csLog);
|
}
|
|
void CDisplayMessage::SetPath(const CString& strPath)
|
{
|
m_strLogPath = strPath;
|
|
CreateDirectory(m_strLogPath, NULL);
|
|
MakeLogFile();
|
}
|
|
BOOL CDisplayMessage::MakeLogFile()
|
{
|
// Log 처리
|
if (m_strLogPath.IsEmpty())
|
return FALSE;
|
|
m_TimeLogFile = CTime::GetCurrentTime();
|
m_strLogFile.Format(_T("%s\\%04d-%02d-%02d.log"), m_strLogPath, m_TimeLogFile.GetYear(), m_TimeLogFile.GetMonth(), m_TimeLogFile.GetDay());
|
|
if (m_pFileLog)
|
{
|
delete m_pFileLog;
|
m_pFileLog = NULL;
|
}
|
|
m_pFileLog = new CFile();
|
|
return TRUE;
|
}
|
// #3417 LYWCF AOI Review 전설비 Log Process개선 ADD START
|
void CDisplayMessage::DisplayMessage(const CString& strMessage)
|
{
|
// WriteToFile(strMessage);
|
//
|
// if(m_pDM2P)
|
// {
|
// m_pDM2P->DM2P_DisplayMessage(strMessage);
|
// }
|
CString* pstrLog = new CString(strMessage);
|
PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0);
|
|
}
|
// #3417 LYWCF AOI Review 전설비 Log Process개선 ADD END
|
|
// #3417 LYWCF AOI Review 전설비 Log Process개선 ADD START
|
void CDisplayMessage::DisplayMessage(const TCHAR* lpstrFormat, ...)
|
{
|
va_list list;
|
TCHAR strText[2000] = {0};
|
try
|
{
|
va_start(list, lpstrFormat);
|
_vstprintf_s(strText, lpstrFormat, list);
|
va_end(list);
|
|
CString* pstrLog = new CString(strText);
|
PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0);
|
}
|
catch (...)
|
{
|
return;
|
}
|
|
|
// WriteToFile(strText);
|
//
|
// if(m_pDM2P)
|
// {
|
// m_pDM2P->DM2P_DisplayMessage(strText);
|
// }
|
}
|
// #3417 LYWCF AOI Review 전설비 Log Process개선 ADD END
|
|
// #3417 LYWCF AOI Review 전설비 Log Process개선 ADD START
|
void CDisplayMessage::ThreadDisplayMessage(const CString& strMessage)
|
{
|
WriteToFile(strMessage);
|
|
if (m_pDM2P)
|
{
|
m_pDM2P->DM2P_DisplayMessage(strMessage);
|
}
|
}
|
|
BOOL CDisplayMessage::WriteToFile(const CString& strMessage)
|
{
|
if(m_pFileLog == NULL) return FALSE;
|
|
//EnterCriticalSection(&m_csLog);
|
|
CTime time = CTime::GetCurrentTime();
|
CString strTimeStamp = _T("");
|
// 날짜가 바뀌면 파일명을 갱신해서 쓴다.
|
if ((time.GetMonth() != m_TimeLogFile.GetMonth()) || (time.GetDay() != m_TimeLogFile.GetDay()) || !m_pFileLog)
|
MakeLogFile();
|
|
if (m_pFileLog->Open(m_strLogFile, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite | CFile::shareDenyNone ))
|
{
|
// 유니코드 파일의 시작은 BOM(0xFEFF) 이어야 한다.
|
TCHAR strCommand = 0xFEFF;
|
CString strLog = _T("");
|
//strTimeStamp.Format(_T("[%02d:%02d:%02d]"), time.GetHour(), time.GetMinute(), time.GetSecond());
|
strTimeStamp.Format(_T("[%02d:%02d:%02d:%02d:%02d:%02d]"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
|
#ifdef UNICODE
|
strLog.Format(_T("%c%s %s\r\n"), strCommand, strTimeStamp, strMessage);
|
#else
|
strLog.Format(_T("%s %s\r\n"), strTimeStamp, strMessage);
|
#endif
|
m_pFileLog->SeekToEnd();
|
m_pFileLog->Write(strLog.GetBuffer(0), strLog.GetLength() * sizeof(TCHAR));
|
strLog.ReleaseBuffer();
|
m_pFileLog->Close();
|
}
|
|
//LeaveCriticalSection(&m_csLog);
|
|
return TRUE;
|
}
|
|
DWORD RunThreadDisplayLog(LPVOID param)
|
{
|
MSG msg;
|
while (GetMessage(&msg, NULL, 0, 0))
|
{
|
CString* pstrLog = reinterpret_cast<CString*>(msg.wParam);
|
switch (msg.message)
|
{
|
case WM_DIPLAY_LOG:
|
|
g_pLog->ThreadDisplayMessage(*pstrLog);
|
delete pstrLog;
|
break;
|
|
default:
|
break;
|
}
|
}
|
return 0;
|
}
|
// #3417 LYWCF AOI Review 전설비 Log Process개선 ADD END
|