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);
87 void RestoreDefaultLevels();
89 std::ostream mOstream;
90 std::ofstream mfilestream;
92 const std::map<LoggingLevel, bool> mDefaultSetup{
93 {LoggingLevel::Default,
true},
94 {LoggingLevel::EWBGDetailed,
false},
95 {LoggingLevel::ProgDetailed,
false},
96 {LoggingLevel::MinimizerDetailed,
false},
97 {LoggingLevel::MinTracerDetailed,
false},
98 {LoggingLevel::TransitionDetailed,
false},
99 {LoggingLevel::BounceDetailed,
false},
100 {LoggingLevel::GWDetailed,
false},
101 {LoggingLevel::Debug,
false}};
103 std::map<LoggingLevel, bool> mCurrentSetup = mDefaultSetup;
114 static void SetLevel(
const std::map<LoggingLevel, bool> &Setup)
116 Instance().SetLevel(Setup);
118 static void SetLevel(LoggingLevel level,
bool enable)
120 Instance().SetLevel(level, enable);
123 static void SetOStream(std::ostream &Ostream)
127 static void SetOStream(
const std::string &file)
131 template <
typename T>
132 static void Write(LoggingLevel level,
134 const std::string &file =
"",
137 Instance().Write(level, toWrite, file, line);
140 static bool GetLoggingLevelStatus(LoggingLevel level)
142 return Instance().mCurrentSetup[level];
145 static void Disable() { Instance().Disable(); }
147 static void RestoreDefaultLevels() { Instance().RestoreDefaultLevels(); }
153 return LoggerInstance;