Some machinations on a config structure as well as a restructure on how

I do logging.
This commit is contained in:
MitchellHansen
2017-09-23 01:06:20 -07:00
parent 2f1adca75d
commit 86f1622090
14 changed files with 1490 additions and 398 deletions

80
src/Logger.cpp Normal file
View File

@@ -0,0 +1,80 @@
#include "Logger.h"
Logger::LogDest Logger::log_destination = LogDest::STDOUT;
Logger::LogLevel Logger::log_level = LogLevel::INFO;
std::ofstream Logger::log_file;
void Logger::log(std::string log_string, LogLevel severity, uint32_t line_number, char* file_name) {
if (severity < log_level)
return;
std::ostream &output = get_stream();
switch (severity) {
case LogLevel::INFO: {
output << "[INFO] --> ";
break;
}
case LogLevel::WARN: {
output << "[WARN] --> ";
break;
}
case LogLevel::ERROR: {
output << "[ERROR] --> ";
break;
}
default: {
output << "";
}
}
output << log_string.c_str();
if (line_number > 0 && file_name)
output << "::" << file_name << ":" << line_number << std::endl;
else
output << std::endl;
}
void Logger::set_log_level(LogLevel log_level) {
Logger::log_level = log_level;
}
void Logger::set_log_destination(LogDest log_destination) {
Logger::log_destination = log_destination;
}
bool Logger::open_log_file() {
log_file.open("../log/logfile.txt");
if (!log_file.is_open()) {
std::cout << "Wooga Wooga! Can't open the log file for writing!" << std::endl;
return false;
} else {
return true;
}
}
std::ostream& Logger::get_stream() {
switch (log_destination) {
case LogDest::STDOUT: {
return std::cout;
}
case LogDest::FILE: {
// Fall through if the file isn't open
if (log_file.is_open())
return log_file;
}
default: {
return std::cout;
}
}
}