#include "StdAfx.h"
|
#include "DisplayMessage.h"
|
|
CDisplayMessage::CDisplayMessage()
|
{
|
m_pDM2P = NULL;
|
m_pFileLog = NULL;
|
|
InitializeCriticalSection(&m_csLog);
|
}
|
|
CDisplayMessage::~CDisplayMessage(void)
|
{
|
if (m_pFileLog)
|
{
|
delete m_pFileLog;
|
m_pFileLog = NULL;
|
}
|
|
DeleteCriticalSection(&m_csLog);
|
}
|
|
void CDisplayMessage::SetPath(const CString& strPath)
|
{
|
m_strLogPath = strPath;
|
|
CreateDirectory(m_strLogPath, NULL);
|
|
m_FSLog.SetRemainDelete(m_strLogPath, TARGETTYPE_FILE, 300);
|
|
MakeLogFile();
|
}
|
|
BOOL CDisplayMessage::MakeLogFile()
|
{
|
// Log ó¸®
|
if (m_strLogPath.IsEmpty())
|
return FALSE;
|
|
m_FSLog.CommitSchedule();
|
|
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 CStdioFile();
|
|
return TRUE;
|
}
|
|
void CDisplayMessage::DisplayMessage(const CString& strMessage)
|
{
|
CString strValue = _T("");
|
//CTime time = CTime::GetCurrentTime();
|
//strValue.Format(_T("[%02d:%02d:%02d] %s"), time.GetHour(), time.GetMinute(), time.GetSecond(), strMessage);
|
|
SYSTEMTIME st;
|
GetLocalTime(&st);
|
strValue.Format(_T("[%02d:%02d:%02d.%03d] %s"), st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, strMessage);
|
|
WriteToFile(strValue);
|
if(m_pDM2P)
|
{
|
m_pDM2P->DisplayMessage((TCHAR*)(LPCTSTR)strValue);
|
}
|
}
|
|
void CDisplayMessage::DisplayMessage(const TCHAR* lpstrFormat, ...)
|
{
|
va_list list;
|
TCHAR strText[2000] = {0};
|
|
va_start(list, lpstrFormat);
|
_vstprintf_s(strText, lpstrFormat, list);
|
va_end(list);
|
|
CString strValue = _T("");
|
//CTime time = CTime::GetCurrentTime();
|
//strValue.Format(_T("[%02d:%02d:%02d] %s"), time.GetHour(), time.GetMinute(), time.GetSecond(), strText);
|
|
SYSTEMTIME st;
|
GetLocalTime(&st);
|
strValue.Format(_T("[%02d:%02d:%02d.%03d] %s"), st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, strText);
|
|
WriteToFile(strValue);
|
|
if(m_pDM2P)
|
{
|
m_pDM2P->DisplayMessage((TCHAR*)(LPCTSTR)strValue);
|
}
|
}
|
|
BOOL CDisplayMessage::WriteToFile(const CString& strMessage)
|
{
|
if(m_pFileLog == NULL) return FALSE;
|
|
EnterCriticalSection(&m_csLog);
|
|
CTime time = CTime::GetCurrentTime();
|
|
if ((time.GetMonth() != m_TimeLogFile.GetMonth()) || (time.GetDay() != m_TimeLogFile.GetDay()) || !m_pFileLog)
|
{
|
MakeLogFile();
|
}
|
|
if ( !m_pFileLog->Open(m_strLogFile, CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate | CFile::shareDenyNone, &m_fileException) )
|
{
|
// #ifdef _DEBUG
|
// TCHAR szCause[255] = {0};
|
// ex.GetErrorMessage(szCause, 255);
|
// TRACE(szCause);
|
// #endif
|
LeaveCriticalSection(&m_csLog);
|
return FALSE;
|
}
|
|
m_pFileLog->SeekToEnd();
|
m_pFileLog->WriteString((TCHAR*)(LPCTSTR)strMessage);
|
m_pFileLog->Close();
|
|
LeaveCriticalSection(&m_csLog);
|
|
return TRUE;
|
}
|