Files
EF3-Interface/HSI_HexagonMI_EF3/logger.cpp
T
2022-10-12 10:18:46 +08:00

118 lines
2.3 KiB
C++

#include "stdafx.h"
#include "logger.h"
#include <atltime.h>
#include <sys/timeb.h>
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);
}