windows-nt/Source/XPSP1/NT/inetsrv/iis/iisrearc/iisplus/inc/logging.h
2020-09-26 16:20:57 +08:00

138 lines
2.7 KiB
C++

/*++
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_
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[256];
//
// 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 dllexp LOGGING
{
public:
LOGGING();
HRESULT ActivateLogging(IN LPCSTR pszInstanceName,
IN LPCWSTR pszMetabasePath,
IN IMSAdminBase *pMDObject);
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_