This commit is contained in:
Suraxius committed 2021-01-09 01:37:05 +01:00
1 parent 0dfda6f481
commit 9fac304771
9 files changed
+116 -51

No files matched your search

+70 -18
View File
@@ -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;
}
}}