Platform independent extensible log class

Environment: VC6, BC55, Win2000 SP2, g++, Redhat Linux 7.1

Introduction:

The ability to log is commonly needed in every software project on every platform. I wrote this class to save time.

There are two basic log classes provided for easy use. One is CFileLog, which implements a file logging system. The other is CRegFileLog that implements a registry controled file logging system. The whole logging system is quit easy to extended for any propose.

How to use:

Just include MjLog.h and construct an MjTools::CFileLog or MjTools::CRegFileLog instance. When you want to add a log message, call yourObject.AddLog(“Log message”).

Demo code:

#include "MjLog.h"
int main()
{
  MjTools::CFileLog m_Log("test.log");
  std::string a="aaa";
  m_Log.Clear();
  m_Log.AddLog("Abc");
  m_Log.AddLog(a);
  MjTools::CFileLog m_Log1=m_Log;
  m_Log1.AddLog("From Log1");
#ifdef WIN32 //RegistryLogControl only valid in Windows system
  // construct a registry key controled log object. If
  // the specified registry key is found,the log is enabled
  MjTools::CRegFileLog m_regLog("reglog.log",
         "HKEY_LOCAL_MACHINE\Software\YourControlKeyName");
  m_regLog.AddLog("reglog");
  m_regLog.Pause();
  m_regLog.AddLog("reglog1");
  m_regLog.Resume();
  m_regLog.AddLog("reglog2");
#endif
  return 0;
}

How to compile:

The source code itself can be compiled and executed. You can use command line tool to compile it.

Under VC++:

CL /D"_TEST_" MjLog.cpp 

This one may cause a link error. I don't know why.But if you use a win32 console project, no error occurs

Under BCC:

bcc32 /D_TEST_ mjlog.cpp

Under Linux:

g++ /D_TEST_ MjLog.cpp

Future Updates:

1. Make the class thread_safe.
2. Still thinking...

Downloads


Download source - 2.41 Kb

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read