ReCodEx - Task Broker
ReCodEx is complex programmer testing solution, primary targeted to technical universities. It's highly customizable and based on modern technologies.
logger.cpp
1 #include "logger.h"
2 
3 std::shared_ptr<spdlog::logger> helpers::create_null_logger()
4 {
5  // Create logger manually to avoid global registration of logger
6  auto sink = std::make_shared<spdlog::sinks::null_sink_st>();
7  auto logger = std::make_shared<spdlog::logger>("", sink);
8 
9  return logger;
10 }
11 
12 spdlog::level::level_enum helpers::get_log_level(const std::string &lev)
13 {
14  if (lev == "off") {
15  return spdlog::level::off;
16  } else if (lev == "emerg") {
17  return spdlog::level::emerg;
18  } else if (lev == "alert") {
19  return spdlog::level::alert;
20  } else if (lev == "critical") {
21  return spdlog::level::critical;
22  } else if (lev == "err") {
23  return spdlog::level::err;
24  } else if (lev == "warn") {
25  return spdlog::level::warn;
26  } else if (lev == "notice") {
27  return spdlog::level::notice;
28  } else if (lev == "info") {
29  return spdlog::level::info;
30  } else if (lev == "debug") {
31  return spdlog::level::debug;
32  }
33 
34  return spdlog::level::trace;
35 }
36 
37 int helpers::get_log_level_number(spdlog::level::level_enum lev)
38 {
39  using namespace spdlog::level;
40 
41  switch (lev) {
42  case trace: return 9;
43  case debug: return 8;
44  case info: return 7;
45  case notice: return 6;
46  case warn: return 5;
47  case err: return 4;
48  case critical: return 3;
49  case alert: return 2;
50  case emerg: return 1;
51  default: return 0;
52  }
53 }
54 
55 int helpers::compare_log_levels(spdlog::level::level_enum first, spdlog::level::level_enum second)
56 {
57  return get_log_level_number(first) - get_log_level_number(second);
58 }