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
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_
|
|
|