Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
LogUtils.h
1#pragma once
2#include <stdexcept>
3#include <string>
4namespace LogUtils {
5inline std::string LogLocationToStr(int line, const char* file,
6 const char* func) {
7 return std::string("Logged from function '") + func + "' in file '" + file +
8 "' at line " + std::to_string(line) + ".\n";
9}
10
11template <typename T>
12class XpansionError : public T {
13 public:
14 explicit XpansionError(const std::string& err_message,
15 const std::string& log_location)
16 : T(log_location + err_message), err_message_(err_message) {}
17 explicit XpansionError(const std::string& prefix,
18 const std::string& err_message,
19 const std::string& log_location)
20 : T(log_location + prefix + err_message), err_message_(err_message) {}
21
22 public:
23 std::string ErrorMessage() const { return err_message_; }
24
25 private:
26 const std::string err_message_;
27};
28
29enum class LOGLEVEL { NONE, TRACE, DEBUG, INFO, WARNING, ERR, FATAL };
30enum class LOGGERTYPE { NONE, FILE, CONSOLE };
31inline std::string LogLevelToStr(const LogUtils::LOGLEVEL log_level) {
32 switch (log_level) {
33 case LogUtils::LOGLEVEL::TRACE:
34 return "TRACE";
35 case LogUtils::LOGLEVEL::DEBUG:
36 return "DEBUG";
37 case LogUtils::LOGLEVEL::INFO:
38 return "INFO";
39 case LogUtils::LOGLEVEL::WARNING:
40 return "WARNING";
41 case LogUtils::LOGLEVEL::ERR:
42 return "ERROR";
43 case LogUtils::LOGLEVEL::FATAL:
44 return "FATAL";
45 default:
46 return "";
47 }
48}
49} // namespace LogUtils
50
51#define LOGLOCATION LogUtils::LogLocationToStr(__LINE__, __FILE__, __func__)