diff options
Diffstat (limited to 'src/crepe/util/log.cpp')
-rw-r--r-- | src/crepe/util/log.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/crepe/util/log.cpp b/src/crepe/util/log.cpp index 0c2ce1e..ce0c07a 100644 --- a/src/crepe/util/log.cpp +++ b/src/crepe/util/log.cpp @@ -5,19 +5,27 @@ #include "fmt.h" #include "log.h" +#include "../api/Config.h" using namespace crepe::util; +using namespace std; -static const char * const LOG_PREFIX[] = { - [log_level::DEBUG] = "[DBG] ", - [log_level::INFO] = "[INFO] ", - [log_level::WARNING] = "[WARN] ", - [log_level::ERROR] = "[ERR] ", -}; +string log_prefix(log_level level) { + switch (level) { + case log_level::TRACE: return LogColor().fg_white().str("[TRACE]") + " "; + case log_level::DEBUG: return LogColor().fg_magenta().str("[DEBUG]") + " "; + case log_level::INFO: return LogColor().fg_blue().str("[INFO]") + " "; + case log_level::WARNING: return LogColor().fg_yellow().str("[WARN]") + " "; + case log_level::ERROR: return LogColor().fg_red().str("[ERROR]") + " "; + } + return ""; +} + +static void log(enum log_level level, const string msg) { + auto & cfg = crepe::api::Config::get_instance(); + if (level < cfg.log.level) return; -static void log(enum log_level level, const std::string & msg) { - using namespace std; - string out = string(LOG_PREFIX[level]) + msg; + string out = log_prefix(level) + msg; if (!out.ends_with("\n")) out += "\n"; // TODO: also log to file or smth @@ -38,3 +46,4 @@ void crepe::util::logf(log_level level, const char * fmt, ...) { log(level, va_stringf(args, fmt)); va_end(args); } + |