add static set log level function and minimum log level variable to FairMQlogger in order to filter output printing.

This commit is contained in:
winckler 2015-04-27 13:22:16 +02:00 committed by Florian Uhlig
parent 445ef356d1
commit 7fa785a8f4
2 changed files with 41 additions and 19 deletions

View File

@ -12,42 +12,52 @@
* @author D. Klein, A. Rybalchenko * @author D. Klein, A. Rybalchenko
*/ */
#include <string>
#include <stdio.h>
#include "FairMQLogger.h" #include "FairMQLogger.h"
using namespace std;
int FairMQLogger::fMinLogLevel = FairMQLogger::DEBUG;
FairMQLogger::FairMQLogger() FairMQLogger::FairMQLogger()
: os() : os(), fLogLevel(DEBUG)
{ {
} }
FairMQLogger::~FairMQLogger() FairMQLogger::~FairMQLogger()
{ {
cout << os.str() << endl; if(fLogLevel>=FairMQLogger::fMinLogLevel && fLogLevel<FairMQLogger::NOLOG)
std::cout << os.str() << std::endl;
} }
ostringstream& FairMQLogger::Log(int type) std::ostringstream& FairMQLogger::Log(int type)
{ {
string type_str; std::string type_str;
fLogLevel=type;
switch (type) switch (type)
{ {
case DEBUG : case DEBUG :
type_str = "\033[01;34mDEBUG\033[0m"; type_str = "\033[01;34mDEBUG\033[0m";
break; break;
case INFO : case INFO :
type_str = "\033[01;32mINFO\033[0m"; type_str = "\033[01;32mINFO\033[0m";
break; break;
case ERROR:
type_str = "\033[01;31mERROR\033[0m";
break;
case WARN : case WARN :
type_str = "\033[01;33mWARN\033[0m"; type_str = "\033[01;33mWARN\033[0m";
break; break;
case ERROR :
type_str = "\033[01;31mERROR\033[0m";
break;
case STATE : case STATE :
type_str = "\033[01;35mSTATE\033[0m"; type_str = "\033[01;35mSTATE\033[0m";
break;
case NOLOG :
type_str = "\033[01;31mNOLOG\033[0m";
break;
default: default:
break; break;
} }

View File

@ -20,24 +20,35 @@
#include <iostream> #include <iostream>
#include <iomanip> #include <iomanip>
#include <ctime> #include <ctime>
#include <string>
#include <stdio.h>
class FairMQLogger class FairMQLogger
{ {
public: public:
enum enum Level
{ {
DEBUG, DEBUG,
INFO, INFO,
ERROR,
WARN, WARN,
STATE ERROR,
STATE,
NOLOG
}; };
FairMQLogger(); FairMQLogger();
virtual ~FairMQLogger(); virtual ~FairMQLogger();
std::ostringstream& Log(int type); std::ostringstream& Log(int type);
static void SetLogLevel(int loglevel)
{
FairMQLogger::fMinLogLevel = loglevel;
}
private: private:
std::ostringstream os; std::ostringstream os;
int fLogLevel;
static int fMinLogLevel;
}; };
typedef unsigned long long timestamp_t; typedef unsigned long long timestamp_t;
@ -46,5 +57,6 @@ timestamp_t get_timestamp();
#define LOG(type) FairMQLogger().Log(FairMQLogger::type) #define LOG(type) FairMQLogger().Log(FairMQLogger::type)
#define MQLOG(type) FairMQLogger().Log(FairMQLogger::type) #define MQLOG(type) FairMQLogger().Log(FairMQLogger::type)
#define SET_LOG_LEVEL(loglevel) FairMQLogger::SetLogLevel(FairMQLogger::loglevel)
#endif /* FAIRMQLOGGER_H_ */ #endif /* FAIRMQLOGGER_H_ */