49 BSMPTLogger(std::ostream &os) : mOstream{os.rdbuf()} {}
68 Write(LoggingLevel level,
const T &toWrite,
const std::string &file,
int line)
70 auto pos = mCurrentSetup.find(level);
71 if (pos != mCurrentSetup.end() and pos->second)
75 mOstream <<
"file: " << file <<
"; ";
79 mOstream <<
"Line: " << line <<
"; ";
81 mOstream << toWrite << std::endl;
84 void SetLevel(
const std::map<LoggingLevel, bool> &level);
85 void SetLevel(LoggingLevel level,
bool enable);
88 std::ostream mOstream;
89 std::ofstream mfilestream;
91 std::map<LoggingLevel, bool> mCurrentSetup{
92 {LoggingLevel::Default,
true},
93 {LoggingLevel::EWBGDetailed,
false},
94 {LoggingLevel::ProgDetailed,
false},
95 {LoggingLevel::MinimizerDetailed,
false},
96 {LoggingLevel::MinTracerDetailed,
false},
97 {LoggingLevel::TransitionDetailed,
false},
98 {LoggingLevel::BounceDetailed,
false},
99 {LoggingLevel::GWDetailed,
false},
100 {LoggingLevel::Debug,
false}};
111 static void SetLevel(
const std::map<LoggingLevel, bool> &Setup)
113 Instance().SetLevel(Setup);
115 static void SetLevel(LoggingLevel level,
bool enable)
117 Instance().SetLevel(level, enable);
120 static void SetOStream(std::ostream &Ostream)
124 static void SetOStream(
const std::string &file)
128 template <
typename T>
129 static void Write(LoggingLevel level,
131 const std::string &file =
"",
134 Instance().Write(level, toWrite, file, line);
137 static bool GetLoggingLevelStatus(LoggingLevel level)
139 return Instance().mCurrentSetup[level];
142 static void Disable() { Instance().Disable(); }
148 return LoggerInstance;