Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

155 lines
3.4 KiB

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name :
logging.h
Abstract:
Logging classes
Author:
Anil Ruia (AnilR) 1-Jul-2000
Environment:
Win32 - User Mode
--*/
#ifndef _LOGGING_H_
#define _LOGGING_H_
#ifndef LOGGING_DLLEXP
# ifdef DLL_IMPLEMENTATION
# define LOGGING_DLLEXP __declspec(dllexport)
# ifdef IMPLEMENTATION_EXPORT
# define LOGGING_EXPIMP
# else
# undef LOGGING_EXPIMP
# endif
# elif defined LIB_IMPLEMENTATION
# define LOGGING_DLLEXP
# define LOGGING_EXPIMP extern
# else
# define LOGGING_DLLEXP __declspec(dllimport)
# define LOGGING_EXPIMP extern
# endif // !DLL_IMPLEMENTATION
#endif // !LOGGING_DLLEXP
enum LAST_IO_PENDING
{
LOG_READ_IO,
LOG_WRITE_IO,
LOG_NO_IO
};
class LOG_CONTEXT
{
public:
LOG_CONTEXT()
: m_msStartTickCount (0),
m_msProcessingTime (0),
m_dwBytesRecvd (0),
m_dwBytesSent (0),
m_ioPending (LOG_NO_IO),
m_strLogParam (m_achLogParam, sizeof m_achLogParam)
{
ZeroMemory(&m_UlLogData, sizeof m_UlLogData);
}
HTTP_LOG_FIELDS_DATA *QueryUlLogData()
{
return &m_UlLogData;
}
//
// The querystring to be logged, may differ from the original querystring
// because of ISAPI doing HSE_APPEND_LOG_PARAMETER
//
STRA m_strLogParam;
CHAR m_achLogParam[64];
//
// The data UL is interested in
//
HTTP_LOG_FIELDS_DATA m_UlLogData;
//
// Couple other things for custom logging
//
STRA m_strVersion;
MULTISZA m_mszHTTPHeaders;
//
// Keep track whether the last I/O was a read or a write so that we
// know on completion whether to increment bytes read or bytes written
//
LAST_IO_PENDING m_ioPending;
DWORD m_msStartTickCount;
DWORD m_msProcessingTime;
DWORD m_dwBytesRecvd;
DWORD m_dwBytesSent;
};
class LOGGING_DLLEXP LOGGING
{
public:
LOGGING();
HRESULT ActivateLogging(IN LPCSTR pszInstanceName,
IN LPCWSTR pszMetabasePath,
IN IMSAdminBase *pMDObject,
IN BOOL fDoCentralBinaryLogging);
void LogInformation(IN LOG_CONTEXT *pLogData);
BOOL IsRequiredExtraLoggingFields() const
{
return !m_mszExtraLoggingFields.IsEmpty();
}
const MULTISZA *QueryExtraLoggingFields() const
{
return &m_mszExtraLoggingFields;
}
void LogCustomInformation(IN DWORD cCount,
IN CUSTOM_LOG_DATA *pCustomLogData,
IN LPSTR szHeaderSuffix);
static HRESULT Initialize();
static VOID Terminate();
BOOL QueryDoUlLogging() const
{
return m_fUlLogType;
}
BOOL QueryDoCustomLogging() const
{
return (m_pComponent != NULL);
}
VOID AddRef();
VOID Release();
private:
~LOGGING();
DWORD m_Signature;
LONG m_cRefs;
BOOL m_fUlLogType;
ILogPlugin *m_pComponent;
MULTISZA m_mszExtraLoggingFields;
};
#endif // _LOGGING_H_