wip
This commit is contained in:
1 parent
0dfda6f481
commit
9fac304771
9 files changed
+116
-51
No files matched your search
+70
-18
@@ -9,32 +9,41 @@ using std::cout;
|
||||
using std::cerr;
|
||||
using std::endl;
|
||||
|
||||
//static string getTimeStamp() { return ctime ( time ( 0 ) ); }
|
||||
|
||||
Logger::Logger(enum Level logLevel, EventBus& eventBus) :
|
||||
Logger::Logger(enum Level logLevel) :
|
||||
logLevel(logLevel),
|
||||
eventBus(eventBus),
|
||||
debug(DEBUG, *this),
|
||||
info(INFO, *this),
|
||||
warn(WARN, *this),
|
||||
fatal(FATAL, *this)
|
||||
{
|
||||
//info(this);
|
||||
logFile = ofstream("plains.log");
|
||||
output = new ofstream("plains.log");
|
||||
|
||||
if (!logFile) {
|
||||
cerr << "Unable to open Logfile" << endl;
|
||||
//logFile = cout.fstream;
|
||||
if (!output) {
|
||||
cerr << "Unable to open Logfile!" << endl;
|
||||
//std::ostream osteam();
|
||||
//aoutput = cout;
|
||||
//output->rdbuf(cout.rdbuf());
|
||||
//output.rdbuf(NULL);
|
||||
}
|
||||
else {
|
||||
cout << "Log file opened" << endl;
|
||||
//oldStdOut = cout.rdbuf();
|
||||
//cout.rdbuf(logFile.rdbuf());
|
||||
debug << "Logfile successfully opened!" << commit;
|
||||
}
|
||||
}
|
||||
|
||||
Logger::~Logger() {
|
||||
logFile.close();
|
||||
output->close();
|
||||
delete output;
|
||||
}
|
||||
|
||||
string Logger::genTimeStamp() {
|
||||
time_t rawtime;
|
||||
struct tm * timeinfo;
|
||||
char buffer[80];
|
||||
time (&rawtime);
|
||||
timeinfo = localtime(&rawtime);
|
||||
strftime(buffer,sizeof(buffer),"%d-%m-%Y %H:%M:%S",timeinfo);
|
||||
|
||||
return string(buffer);
|
||||
}
|
||||
|
||||
void Logger::setLogLevel(Level level) {
|
||||
@@ -51,26 +60,69 @@ void Logger::log(Level lvl, const char* msg) {
|
||||
}
|
||||
}
|
||||
|
||||
Logger::Sink::Sink (const Level level, Logger& parent) : level(level), parent(parent) {}
|
||||
Logger::Sink::Sink (const Level level, Logger& parent) :
|
||||
level(level),
|
||||
parent(parent),
|
||||
lineIsPrefixed(false) {}
|
||||
|
||||
void Logger::Sink::ln ( const string& msg ) {
|
||||
if ( level >= parent.logLevel ) parent.logFile << "DATESTAMP [" << level << "] " << msg << endl;
|
||||
ln(msg.c_str());
|
||||
}
|
||||
|
||||
void Logger::Sink::ln ( const char* msg ) {
|
||||
if ( level >= parent.logLevel ) parent.logFile << "DATESTAMP [" << level << "] " << msg << endl;
|
||||
if ( level >= parent.logLevel ) {
|
||||
// If line has already been started, abort it and start new one:
|
||||
if(lineIsPrefixed) *parent.output << endl;
|
||||
prefixLine(true);
|
||||
*parent.output << msg << endl;
|
||||
}
|
||||
}
|
||||
|
||||
void Logger::Sink::prefixLine(bool resetToFalse) {
|
||||
if (!lineIsPrefixed) {
|
||||
*parent.output << Logger::genTimeStamp() << " ";
|
||||
lineIsPrefixed = resetToFalse ? false : true;
|
||||
}
|
||||
}
|
||||
|
||||
Logger::Sink& Logger::Sink::operator<<(const string& msg) {
|
||||
if ( level >= parent.logLevel ) parent.logFile << "DATESTAMP [" << level << "] " << msg;
|
||||
if ( level >= parent.logLevel ) {
|
||||
prefixLine();
|
||||
*parent.output << msg;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
Logger::Sink& Logger::Sink::operator<<(const char* msg) {
|
||||
if ( level >= parent.logLevel ) parent.logFile << "DATESTAMP [" << level << "] " << msg;
|
||||
if ( level >= parent.logLevel ) {
|
||||
prefixLine();
|
||||
*parent.output << msg;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
Logger::Sink& Logger::Sink::operator<<(const unsigned long msg) {
|
||||
if ( level >= parent.logLevel ) {
|
||||
prefixLine();
|
||||
*parent.output << msg;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
Logger::Sink& Logger::Sink::operator<<(const char character) {
|
||||
if ( level >= parent.logLevel ) {
|
||||
switch(character) {
|
||||
// COMMIT - End message line
|
||||
case 0:
|
||||
*parent.output << endl;
|
||||
lineIsPrefixed = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}}
|
||||
Reference in new issue
Block a user