169 lines
5 KiB
C
169 lines
5 KiB
C
|
//
|
||
|
|
||
|
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
|
||
|
//
|
||
|
// ***************************************************************************
|
||
|
//
|
||
|
// Original Author: Rajesh Rao
|
||
|
//
|
||
|
// $Author: rajeshr $
|
||
|
// $Date: 6/11/98 4:43p $
|
||
|
// $Workfile:log.h $
|
||
|
//
|
||
|
// $Modtime: 6/11/98 11:21a $
|
||
|
// $Revision: 1 $
|
||
|
// $Nokeywords: $
|
||
|
//
|
||
|
//
|
||
|
// Description: Contains the declaration for the Logging object which supplies
|
||
|
// basic thread-safe logging capabilities. The behaviour of this log object depends on
|
||
|
// 3 keys in the registry under a root key whose path is supplied in the construction
|
||
|
// of this object. The 3 keys are:
|
||
|
// File: The path to the file where the logging is done
|
||
|
// Enabled: 1 if logging is enabled, any other value disables logging
|
||
|
// Level: Severity level. Only messages tagged with severity levels greater than
|
||
|
// or equal to this level are logged/
|
||
|
//
|
||
|
//***************************************************************************
|
||
|
/////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
class CDsLog : ProvDebugLog
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
//***************************************************************************
|
||
|
//
|
||
|
// CDsLog::CDsLog
|
||
|
//
|
||
|
// Purpose: Contructs an empty CDsLog object.
|
||
|
//
|
||
|
// Parameters:
|
||
|
// None
|
||
|
//
|
||
|
//***************************************************************************
|
||
|
CDsLog(const TCHAR *a_DebugComponent );
|
||
|
|
||
|
//***************************************************************************
|
||
|
//
|
||
|
// CDsLog::~CDsLog
|
||
|
//
|
||
|
// Purpose: Destructor
|
||
|
//
|
||
|
//
|
||
|
//***************************************************************************
|
||
|
virtual ~CDsLog();
|
||
|
|
||
|
//***************************************************************************
|
||
|
//
|
||
|
// CDsLog::LogMessage
|
||
|
//
|
||
|
// Purpose: Initialise it by supplying the registry key that stores the
|
||
|
// configuration information
|
||
|
//
|
||
|
// Parameters:
|
||
|
// lpszRegistrySubTreeRoot: The root of the subtree from which the configuration
|
||
|
// values ("File", "Enabled" and "Level") are read
|
||
|
//
|
||
|
// Return Value:
|
||
|
// TRUE If the object was initialized successfully. else, FALSE.
|
||
|
//
|
||
|
//***************************************************************************
|
||
|
BOOLEAN Initialise(LPCWSTR lpRegistryRoot);
|
||
|
|
||
|
//***************************************************************************
|
||
|
//
|
||
|
// CDsLog::LogMessage
|
||
|
//
|
||
|
// Purpose: Initialise it by supplying the values for File, Level and Enabled keys
|
||
|
//
|
||
|
// Parameters:
|
||
|
// lpszFileName: The name of the file to which log messages are written
|
||
|
// bEnabled: Whether ;pgging is enabled to start with
|
||
|
// iLevel : The severity level. Any messages at or above this level are logged.
|
||
|
//
|
||
|
// Return Value:
|
||
|
// TRUE if successfully initialized. Else, FALSE
|
||
|
//
|
||
|
//***************************************************************************
|
||
|
BOOLEAN Initialise(LPCWSTR lpszFileName, BOOLEAN bEnabled, UINT iLevel);
|
||
|
|
||
|
//***************************************************************************
|
||
|
//
|
||
|
// CDsLog::LogMessage
|
||
|
//
|
||
|
// Purpose: Logs a message. The actual message is written on to the log file
|
||
|
// only if logging has been enabled and the severity level of the message is
|
||
|
// greater than the severity level currently logged
|
||
|
//
|
||
|
// Parameters:
|
||
|
// iLevel : The severity level of this message
|
||
|
// lpszMessage : The message which is formatted according to the
|
||
|
// standard printf() format
|
||
|
// The rest of the arguments required for above string to be pronted follow
|
||
|
//
|
||
|
// Return Value:
|
||
|
// None
|
||
|
//
|
||
|
//***************************************************************************
|
||
|
void LogMessage(UINT iLevel, LPCWSTR lpszMessage, ...);
|
||
|
|
||
|
// The various severity levels
|
||
|
enum SeverityLevels
|
||
|
{
|
||
|
NONE,
|
||
|
INFORMATION,
|
||
|
WARNING,
|
||
|
FATAL
|
||
|
};
|
||
|
|
||
|
private:
|
||
|
//***************************************************************************
|
||
|
//
|
||
|
// CDsLog::WriteInitialMessage
|
||
|
//
|
||
|
// Purpose: Writes the time the log was created into the log file
|
||
|
//
|
||
|
// Parameters:
|
||
|
//
|
||
|
// Return Value: None
|
||
|
//
|
||
|
//***************************************************************************
|
||
|
void WriteInitialMessage();
|
||
|
|
||
|
//***************************************************************************
|
||
|
//
|
||
|
// CDsLog::GetRegistryValues
|
||
|
//
|
||
|
// Purpose: Reads the registry values and fills in the members.
|
||
|
//
|
||
|
// Parameters:
|
||
|
// lpszRegistrySubTreeRoot: The root of the subtree from which the configuration
|
||
|
// values ("File", "Enabled" and "Level") are read
|
||
|
//
|
||
|
// Return Value:
|
||
|
// TRUE If the reading of the registry was done successflly, FALSE otherwise
|
||
|
//
|
||
|
//***************************************************************************
|
||
|
BOOLEAN GetRegistryValues(LPCWSTR lpRegistryRoot);
|
||
|
|
||
|
// The Log File name
|
||
|
LPTSTR m_lpszLogFileName;
|
||
|
|
||
|
// Pointer to the log file
|
||
|
ProvDebugLog *m_pProvLog;
|
||
|
// Logging level till which logging is enabled
|
||
|
UINT m_iLevel;
|
||
|
// Whether logging is enabled
|
||
|
BOOLEAN m_bEnabled;
|
||
|
|
||
|
// The key in the registry below which the File, Enabled and Type keys are
|
||
|
// defined
|
||
|
LPTSTR m_lpszRegistryRoot;
|
||
|
|
||
|
// Literals for "FILE", "ENABLED" and "TYPE"
|
||
|
static LPCTSTR FILE_STRING;
|
||
|
static LPCTSTR ENABLED_STRING;
|
||
|
static LPCTSTR LEVEL_STRING;
|
||
|
static LPCTSTR ONE_STRING;
|
||
|
|
||
|
};
|