176 lines
2.9 KiB
C++
176 lines
2.9 KiB
C++
// Logger.cpp: implementation of the CPersistor class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
//***************************************************************************
|
|
//
|
|
// judyp May 1999
|
|
//
|
|
//***************************************************************************
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include <string>
|
|
#include <iosfwd>
|
|
#include <iostream>
|
|
#include <fstream>
|
|
#include <ctime>
|
|
#include <list>
|
|
|
|
using namespace std;
|
|
|
|
#include <malloc.h>
|
|
#include <tchar.h>
|
|
#include <windows.h>
|
|
#ifdef NONNT5
|
|
typedef unsigned long ULONG_PTR;
|
|
#endif
|
|
#include <wmistr.h>
|
|
#include <guiddef.h>
|
|
#include <initguid.h>
|
|
#include <evntrace.h>
|
|
|
|
#include <WTYPES.H>
|
|
#include "t_string.h"
|
|
|
|
#include "Persistor.h"
|
|
#include "Logger.h"
|
|
#include "TCOData.h"
|
|
#include "Utilities.h"
|
|
#include "StructureWrappers.h"
|
|
#include "StructureWapperHelpers.h"
|
|
|
|
#include "Logger.h"
|
|
|
|
|
|
#ifdef _UNICODE
|
|
static TCHAR g_tcBeginFile[] = {0xfeff,0x0d, 0x0a};
|
|
static TCHAR g_atcNL[] = {0x0d, 0x0a, 0x00};
|
|
#endif
|
|
|
|
CLogger::CLogger(LPCTSTR lpctstrFileName, bool bAppend)
|
|
{
|
|
#ifdef _UNICODE
|
|
m_sFileName = NewLPSTR((LPCWSTR) const_cast<LPTSTR>(lpctstrFileName));
|
|
#else
|
|
m_sFileName = NewTCHAR(lpctstrFileName);
|
|
#endif
|
|
|
|
m_pPersistor = new CPersistor(m_sFileName, ios::out, false);
|
|
m_hr = m_pPersistor -> OpenLog(bAppend);
|
|
}
|
|
|
|
CLogger::~CLogger()
|
|
{
|
|
free(m_sFileName);
|
|
delete m_pPersistor;
|
|
}
|
|
|
|
int CLogger::LogTCHAR(LPCTSTR lpctstrOut)
|
|
{
|
|
if (FAILED(m_hr))
|
|
{
|
|
return m_hr;
|
|
}
|
|
|
|
if (lpctstrOut)
|
|
{
|
|
PutALine(m_pPersistor->Stream(), lpctstrOut, -1);
|
|
m_pPersistor->Stream().flush();
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int CLogger::LogTime(time_t &Time)
|
|
{
|
|
if (FAILED(m_hr))
|
|
{
|
|
return m_hr;
|
|
}
|
|
|
|
TCHAR tcArray[26];
|
|
LPCTSTR lpctstrTime = t_ctime(&Time);
|
|
_tcscpy(tcArray,lpctstrTime);
|
|
tcArray[24] = _T('\0');
|
|
TCHAR *p = tcArray;
|
|
|
|
PutALine(m_pPersistor->Stream(), p, -1);
|
|
m_pPersistor->Stream().flush();
|
|
|
|
return 0;
|
|
}
|
|
|
|
int CLogger::LogULONG(ULONG ul, bool bHex)
|
|
{
|
|
if (FAILED(m_hr))
|
|
{
|
|
return m_hr;
|
|
}
|
|
|
|
if (bHex)
|
|
{
|
|
PutALine(m_pPersistor->Stream(), _T("0x"), -1);
|
|
}
|
|
|
|
PutAULONGVar(m_pPersistor->Stream(), ul, bHex);
|
|
|
|
m_pPersistor->Stream().flush();
|
|
|
|
return 0;
|
|
}
|
|
|
|
int CLogger::LogULONG64(ULONG64 ul, bool bHex)
|
|
{
|
|
if (FAILED(m_hr))
|
|
{
|
|
return m_hr;
|
|
}
|
|
|
|
if (bHex)
|
|
{
|
|
PutALine(m_pPersistor->Stream(), _T("0x"), -1);
|
|
}
|
|
|
|
PutAULONG64Var(m_pPersistor->Stream(), ul);
|
|
|
|
m_pPersistor->Stream().flush();
|
|
|
|
return 0;
|
|
}
|
|
|
|
int CLogger::LogGUID(GUID Guid)
|
|
{
|
|
if (FAILED(m_hr))
|
|
{
|
|
return m_hr;
|
|
}
|
|
|
|
GUIDOut(m_pPersistor->Stream(), Guid);
|
|
|
|
m_pPersistor->Stream().flush();
|
|
|
|
return 0;
|
|
}
|
|
|
|
int CLogger::LogEventTraceProperties(PEVENT_TRACE_PROPERTIES pProps)
|
|
{
|
|
if (FAILED(m_hr))
|
|
{
|
|
return m_hr;
|
|
}
|
|
|
|
if (pProps == NULL)
|
|
{
|
|
PutALine(m_pPersistor->Stream(),_T("_EVENT_TRACE_PROPERTIES Instance NULL\n"),-1);
|
|
return 0;
|
|
}
|
|
|
|
CEventTraceProperties Props(pProps);
|
|
|
|
m_pPersistor->Stream() << Props;
|
|
|
|
m_pPersistor->Stream().flush();
|
|
|
|
return 0;
|
|
}
|