|
// SingleLogger.h: interface for the singleton CSingleLogger class.
//
//////////////////////////////////////////////////////////////////////
#ifndef SINGLELOGGER_H
#define SINGLELOGGER_H
/* disable MSVC warnings about STL in debug mode */
#if _MSC_VER > 1000
#pragma warning (disable: 4786)
#pragma warning (disable: 4748)
#pragma warning (disable: 4103)
#endif /* _MSC_VER > 1000 */
#include "TraceLevels.h"
#include "TGuard.h"
#include "MSMutex.h"
#include "NullMutex.h"
#define LOCK_SYNC_NAME _T("TheTracingMutex")
/* System wide default global Sync Object (e.g. Mutex) name */
class CSingleLogger /* this class is a (Meyer) Singleton! */
{
public:
static CSingleLogger* GetInstance();
static bool IsCSingleLoggerEnabled;
void Trace(unsigned short nTraceLevel, const TCHAR * pszFormat, ...);
// The client MUST set parameters before using the logger, but we just
// use defaults otherwise.
void EnableTracing(bool bEnable);
void SetParameters(unsigned long nTimeOut, const TCHAR* sFileName, int nTraceLvl);
bool AreParametersSet(void);
void LoadDefaults();
void CheckAndSetTraceFileName(const TCHAR *sFileName);
private:
CSingleLogger();
~CSingleLogger();
static CSingleLogger* SingleInstance; /* this class is a Singleton! */
unsigned long CheckLockTimeOut(unsigned long nTimeOut);
int CheckTraceLevel(int nTraceLvl);
bool DiscriminateLevel(int nTraceLevel);
CString m_szTraceFileName;
unsigned long m_nLockTimeOut;
int m_nTraceLevel;
bool m_bAreParametersSet;
/* Strategized Scoped Locking pattern (equivalent to MFC CSingleLock) */
/* Note: DO use a mutex for the LOCK object */
// Lock object used for sync access to shared logger
#ifdef _WIN32
CMSMutex* m_aLock;
#else
CNullMutex* m_aLock;
#endif
};
#endif /* ! defined SINGLELOGGER_H */
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Senior Software Developer in C/C++ and Oracle.
Ex-physicist holding a Ph.D. on x-ray lasers.