You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.4 KiB

#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;
}
}
}