Exemple #1
0
void StopLogger()
{
  CAutoLock logLock(&m_logLock);
  if (m_hLogger)
  {
    //Make sure the thread runs soon so it can finish processing
    SetThreadPriority(m_hLogger, THREAD_PRIORITY_NORMAL);
    m_bLoggerRunning = FALSE;
    m_EndLoggingEvent.Set();
    WaitForSingleObject(m_hLogger, INFINITE);	
    m_EndLoggingEvent.Reset();
    CloseHandle(m_hLogger);
    m_hLogger = NULL;
    logFileParsed = -1;
    logFileDate = -1;
    instanceID = 0;
  }
}
Exemple #2
0
void Log(const char *fmt, ...)
{
  static CCritSec lock;
  va_list ap;
  va_start(ap, fmt);

  CAutoLock logLock(&lock);
  if (!m_hLogger) 
  {
    m_bLoggerRunning = true;
    StartLogger();
  }
  char buffer[1000]; 
  int ret;
  va_start(ap, fmt);
  ret = vsprintf(buffer, fmt, ap);
  va_end(ap); 

  if (ret < 0)
    return;

  SYSTEMTIME systemTime;
  GetLocalTime(&systemTime);
  char msg[500];
  sprintf_s(msg, 500,"%02.2d-%02.2d-%04.4d %02.2d:%02.2d:%02.2d.%03.3d [%5x] %s\n",
    systemTime.wDay, systemTime.wMonth, systemTime.wYear,
    systemTime.wHour, systemTime.wMinute, systemTime.wSecond,
    systemTime.wMilliseconds,
    GetCurrentThreadId(),
    buffer);

  CAutoLock l(&m_qLock);

  m_logQueue.push((string)msg);
  m_eLog.Set();
}