210 lines
5.3 KiB
C
210 lines
5.3 KiB
C
#pragma once
|
|
//-------------------------------------------------------------------------------------------------
|
|
// <copyright file="logutil.h" company="Outercurve Foundation">
|
|
// Copyright (c) 2004, Outercurve Foundation.
|
|
// This software is released under Microsoft Reciprocal License (MS-RL).
|
|
// The license and further copyright text can be found in the file
|
|
// LICENSE.TXT at the root directory of the distribution.
|
|
// </copyright>
|
|
//
|
|
// <summary>
|
|
// Logging helper functions.
|
|
// </summary>
|
|
//-------------------------------------------------------------------------------------------------
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define LogExitOnFailure(x, i, f) if (FAILED(x)) { LogErrorId(x, i, NULL, NULL, NULL); ExitTrace(x, f); goto LExit; }
|
|
#define LogExitOnFailure1(x, i, f, s) if (FAILED(x)) { LogErrorId(x, i, s, NULL, NULL); ExitTrace1(x, f, s); goto LExit; }
|
|
#define LogExitOnFailure2(x, i, f, s, t) if (FAILED(x)) { LogErrorId(x, i, s, t, NULL); ExitTrace2(x, f, s, t); goto LExit; }
|
|
#define LogExitOnFailure3(x, i, f, s, t, u) if (FAILED(x)) { LogErrorId(x, i, s, t, u); ExitTrace3(x, f, s, t, u); goto LExit; }
|
|
|
|
#define LogExitOnRootFailure(x, i, f) if (FAILED(x)) { LogErrorId(x, i, NULL, NULL, NULL); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, f); goto LExit; }
|
|
#define LogExitOnRootFailure1(x, i, f, s) if (FAILED(x)) { LogErrorId(x, i, s, NULL, NULL); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; }
|
|
#define LogExitOnRootFailure2(x, i, f, s, t) if (FAILED(x)) { LogErrorId(x, i, s, t, NULL); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; }
|
|
#define LogExitOnRootFailure3(x, i, f, s, t, u) if (FAILED(x)) { LogErrorId(x, i, s, t, u); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace3(x, f, s, t, u); goto LExit; }
|
|
|
|
typedef HRESULT (DAPI *PFN_LOGSTRINGWORKRAW)(
|
|
__in_z LPCSTR szString,
|
|
__in_opt LPVOID pvContext
|
|
);
|
|
|
|
// enums
|
|
|
|
// structs
|
|
|
|
// functions
|
|
BOOL DAPI IsLogInitialized();
|
|
|
|
BOOL DAPI IsLogOpen();
|
|
|
|
void DAPI LogInitialize(
|
|
__in HMODULE hModule
|
|
);
|
|
|
|
HRESULT DAPI LogOpen(
|
|
__in_z_opt LPCWSTR wzDirectory,
|
|
__in_z LPCWSTR wzLog,
|
|
__in_z_opt LPCWSTR wzPostfix,
|
|
__in_z_opt LPCWSTR wzExt,
|
|
__in BOOL fAppend,
|
|
__in BOOL fHeader,
|
|
__out_z_opt LPWSTR* psczLogPath
|
|
);
|
|
|
|
void DAPI LogDisable();
|
|
|
|
void DAPI LogRedirect(
|
|
__in_opt PFN_LOGSTRINGWORKRAW vpfLogStringWorkRaw,
|
|
__in_opt LPVOID pvContext
|
|
);
|
|
|
|
HRESULT DAPI LogRename(
|
|
__in_z LPCWSTR wzNewPath
|
|
);
|
|
|
|
void DAPI LogClose(
|
|
__in BOOL fFooter
|
|
);
|
|
|
|
void DAPI LogUninitialize(
|
|
__in BOOL fFooter
|
|
);
|
|
|
|
BOOL DAPI LogIsOpen();
|
|
|
|
HRESULT DAPI LogSetSpecialParams(
|
|
__in_z_opt LPCWSTR wzSpecialBeginLine,
|
|
__in_z_opt LPCWSTR wzSpecialAfterTimeStamp,
|
|
__in_z_opt LPCWSTR wzSpecialEndLine
|
|
);
|
|
|
|
REPORT_LEVEL DAPI LogSetLevel(
|
|
__in REPORT_LEVEL rl,
|
|
__in BOOL fLogChange
|
|
);
|
|
|
|
REPORT_LEVEL DAPI LogGetLevel();
|
|
|
|
HRESULT DAPI LogGetPath(
|
|
__out_ecount_z(cchLogPath) LPWSTR pwzLogPath,
|
|
__in DWORD cchLogPath
|
|
);
|
|
|
|
HANDLE DAPI LogGetHandle();
|
|
|
|
HRESULT DAPIV LogString(
|
|
__in REPORT_LEVEL rl,
|
|
__in_z __format_string LPCSTR szFormat,
|
|
...
|
|
);
|
|
|
|
HRESULT DAPI LogStringArgs(
|
|
__in REPORT_LEVEL rl,
|
|
__in_z __format_string LPCSTR szFormat,
|
|
__in va_list args
|
|
);
|
|
|
|
HRESULT DAPIV LogStringLine(
|
|
__in REPORT_LEVEL rl,
|
|
__in_z __format_string LPCSTR szFormat,
|
|
...
|
|
);
|
|
|
|
HRESULT DAPI LogStringLineArgs(
|
|
__in REPORT_LEVEL rl,
|
|
__in_z __format_string LPCSTR szFormat,
|
|
__in va_list args
|
|
);
|
|
|
|
HRESULT DAPI LogIdModuleArgs(
|
|
__in REPORT_LEVEL rl,
|
|
__in DWORD dwLogId,
|
|
__in_opt HMODULE hModule,
|
|
__in va_list args
|
|
);
|
|
|
|
/*
|
|
* Wraps LogIdModuleArgs, so inline to save the function call
|
|
*/
|
|
|
|
inline HRESULT LogId(
|
|
__in REPORT_LEVEL rl,
|
|
__in DWORD dwLogId,
|
|
...
|
|
)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
va_list args;
|
|
|
|
va_start(args, dwLogId);
|
|
hr = LogIdModuleArgs(rl, dwLogId, NULL, args);
|
|
va_end(args);
|
|
|
|
return hr;
|
|
}
|
|
|
|
|
|
/*
|
|
* Wraps LogIdModuleArgs, so inline to save the function call
|
|
*/
|
|
|
|
inline HRESULT LogIdArgs(
|
|
__in REPORT_LEVEL rl,
|
|
__in DWORD dwLogId,
|
|
__in va_list args
|
|
)
|
|
{
|
|
return LogIdModuleArgs(rl, dwLogId, NULL, args);
|
|
}
|
|
|
|
HRESULT DAPIV LogErrorString(
|
|
__in HRESULT hrError,
|
|
__in_z __format_string LPCSTR szFormat,
|
|
...
|
|
);
|
|
|
|
HRESULT DAPI LogErrorStringArgs(
|
|
__in HRESULT hrError,
|
|
__in_z __format_string LPCSTR szFormat,
|
|
__in va_list args
|
|
);
|
|
|
|
HRESULT DAPI LogErrorIdModule(
|
|
__in HRESULT hrError,
|
|
__in DWORD dwLogId,
|
|
__in_opt HMODULE hModule,
|
|
__in_z_opt LPCWSTR wzString1,
|
|
__in_z_opt LPCWSTR wzString2,
|
|
__in_z_opt LPCWSTR wzString3
|
|
);
|
|
|
|
inline HRESULT LogErrorId(
|
|
__in HRESULT hrError,
|
|
__in DWORD dwLogId,
|
|
__in_z_opt LPCWSTR wzString1,
|
|
__in_z_opt LPCWSTR wzString2,
|
|
__in_z_opt LPCWSTR wzString3
|
|
)
|
|
{
|
|
return LogErrorIdModule(hrError, dwLogId, NULL, wzString1, wzString2, wzString3);
|
|
}
|
|
|
|
HRESULT DAPI LogHeader();
|
|
|
|
HRESULT DAPI LogFooter();
|
|
|
|
HRESULT LogStringWorkRaw(
|
|
__in_z LPCSTR szLogData
|
|
);
|
|
|
|
// begin the switch of LogXXX to LogStringXXX
|
|
#define Log LogString
|
|
#define LogLine LogStringLine
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|