WindowsXP-SP1/base/wmi/tests/logger/logger.cpp
2020-09-30 16:53:49 +02:00

176 lines
3.0 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;
}