Trivial logging subsystem.

This commit is contained in:
JoelKatz
2012-05-31 16:59:58 -07:00
parent c015aea3e8
commit 7d0b17ba88
2 changed files with 83 additions and 0 deletions

38
src/Log.cpp Normal file
View File

@@ -0,0 +1,38 @@
#include "Log.h"
#include <boost/date_time/posix_time/posix_time.hpp>
boost::recursive_mutex Log::sLock;
#ifdef DEBUG
LogSeverity Log::sMinSeverity = lsTRACE;
#else
LogSeverity Log::sMinSeverity = lsINFO;
#endif
Log::~Log()
{
std::string logMsg = boost::posix_time::to_simple_string(boost::posix_time::second_clock::universal_time());
switch (mSeverity)
{
case lsTRACE: logMsg += " TRAC "; break;
case lsDEBUG: logMsg += " DEBG "; break;
case lsINFO: logMsg += " INFO "; break;
case lsWARNING: logMsg += " WARN "; break;
case lsERROR: logMsg += " EROR "; break;
case lsFATAL: logMsg += " FATL "; break;
}
logMsg += oss.str();
boost::recursive_mutex::scoped_lock sl(sLock);
if (mSeverity >= sMinSeverity)
{
std::cerr << logMsg << std::endl;
}
}
void Log::setMinSeverity(LogSeverity s)
{
boost::recursive_mutex::scoped_lock sl(sLock);
sMinSeverity = s;
}

45
src/Log.h Normal file
View File

@@ -0,0 +1,45 @@
#ifndef __LOG__
#define __LOG__
#include <sstream>
#include <boost/thread/recursive_mutex.hpp>
enum LogSeverity
{
lsTRACE = 0,
lsDEBUG = 1,
lsINFO = 2,
lsWARNING = 3,
lsERROR = 4,
lsFATAL = 5
};
class Log
{
private:
Log(const Log&); // no implementation
Log& operator=(const Log&); // no implementation
protected:
static boost::recursive_mutex sLock;
static LogSeverity sMinSeverity;
mutable std::ostringstream oss;
LogSeverity mSeverity;
public:
Log(LogSeverity s) : mSeverity(s)
{ ; }
~Log();
template<typename T> std::ostream& operator<<(const T& t) const
{
return oss << t;
}
static void setMinSeverity(LogSeverity);
};
#endif