#include "stdafx.h" #include "logger.h" #include #include void CLogger::SendAtTime(const TCHAR* buffer) { EnterCriticalSection(&m_lockLogger); if (!m_File) { m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); } if (m_File) { CTime _cTime = CTime::GetCurrentTime(); CString csTime = _cTime.Format("[%m/%d %H:%M] "); _ftprintf(m_File,_T("%s"), csTime); _ftprintf(m_File, _T("%s\r\n"), buffer); } LeaveCriticalSection(&m_lockLogger); } void CLogger::Send(LPCTSTR format, ...) { EnterCriticalSection(&m_lockLogger); if (!m_File) { m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); } int length = 0; va_list list; va_start(list, format); length = vswprintf_s(m_Str, 5000, format, list); if (m_File) { _ftprintf(m_File, m_Str); } LeaveCriticalSection(&m_lockLogger); } void CLogger::SendAndFlush(LPCTSTR format, ...) { EnterCriticalSection(&m_lockLogger); int length = 0; va_list list; va_start(list, format); length = vswprintf_s(m_Str2, 5000, format, list); Send(m_Str2); if (m_File) { fclose(m_File); m_File = nullptr; if (m_FileName.GetLength() > 0) m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); } LeaveCriticalSection(&m_lockLogger); } void CLogger::SendAndFlushWithTime(LPCTSTR format, ...) { EnterCriticalSection(&m_lockLogger); if (!IsEnabledLog) { return; } if (!m_File) { m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYNO); } if (m_File) { int length = 0; va_list list; va_start(list, format); length = vswprintf_s(m_Str2, 5000, format, list); CTime _cTime = CTime::GetCurrentTime(); CString csTime = _cTime.Format("[%m/%d %H:%M:%S"); struct _timeb timebuffer; _ftime64_s(&timebuffer); if (m_File) { _ftprintf(m_File, _T("%s:%03d] "), csTime, timebuffer.millitm); } if (m_File) { _ftprintf(m_File, m_Str2); } if (m_File) { fclose(m_File); m_File = nullptr; } } LeaveCriticalSection(&m_lockLogger); } void CLogger::SendAndFlushPerMode(LPCTSTR format, ...) { EnterCriticalSection(&m_lockLogger); int length = 0; va_list list; va_start(list, format); length = vswprintf_s(m_Str2, 5000, format, list); Send(m_Str2); if ((m_lLogMask & LOGFLUSH) && m_File) { fclose(m_File); m_File = nullptr; if (m_FileName.GetLength() > 0) m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); } LeaveCriticalSection(&m_lockLogger); }