roadrunner  2.6.0
Fast simulator for SBML models
rrLogger.h
1 #ifndef rrLoggerH
2 #define rrLoggerH
3 #include <sstream>
4 #include "rrExporter.h"
5 
6 
7 namespace Poco {
8 class Logger;
9 }
10 
11 namespace rr
12 {
13 
35 class RR_DECLSPEC LoggingBuffer
36 {
37 public:
38  LoggingBuffer(int level, const char* file, int line);
39 
43  ~LoggingBuffer();
44 
48  std::ostream &stream();
49 
50 private:
51  std::stringstream buffer;
52  int level;
53  const char* file;
54  int line;
55 };
56 
62 class RR_DECLSPEC Logger
63 {
64 public:
70  enum Level
71  {
83  LOG_CURRENT = 0,
84  LOG_FATAL = 1,
85  LOG_CRITICAL = 2,
86  LOG_ERROR = 3,
87  LOG_WARNING = 4,
88  LOG_NOTICE = 5,
89  LOG_INFORMATION = 6,
90  LOG_DEBUG = 7,
91  LOG_TRACE =8
92  };
93 
97  static void setLevel(int level = LOG_CURRENT);
98 
102  static int getLevel();
103 
107  static void disableLogging();
108 
112  static void disableConsoleLogging();
113 
117  static void enableConsoleLogging(int level = LOG_CURRENT);
118 
131  static void enableFileLogging(const std::string& fileName = "",
132  int level = LOG_CURRENT);
133 
137  static void disableFileLogging();
138 
142  static std::string getCurrentLevelAsString();
143 
147  static std::string getFileName();
148 
209  static void setFormattingPattern(const std::string &format);
210 
214  static std::string getFormattingPattern();
215 
219  static std::string levelToString(int level);
220 
224  static Level stringToLevel(const std::string& str);
225 
229  static bool getColoredOutput();
230 
234  static void setColoredOutput(bool);
235 
236 
274  static void setProperty(const std::string& name, const std::string& value);
275 
276 
283  static void log(Level level, const std::string& msg);
284 
285 #ifndef SWIG // don't expose this to SWIG
286 
298  static void setConsoleStream(std::ostream *os);
299 #endif
300 };
301 
305 enum LogLevel
306 {
307  lAny = Logger::LOG_ERROR,
308  lError = Logger::LOG_ERROR,
309  lWarning = Logger::LOG_WARNING,
310  lInfo = Logger::LOG_INFORMATION,
311  lDebug = Logger::LOG_DEBUG,
312  lDebug1 = Logger::LOG_TRACE,
313  lDebug2 = Logger::LOG_TRACE,
314  lDebug3 = Logger::LOG_TRACE,
315  lDebug4 = Logger::LOG_TRACE,
316  lDebug5 = Logger::LOG_TRACE,
317  lUser = Logger::LOG_TRACE
318 };
319 
326 RR_DECLSPEC Poco::Logger &getLogger();
327 
331 #define gLog Logger()
332 
333 #ifndef NO_LOGGER
334 #define rrLog(level) \
335  if ((level) > rr::Logger::getLevel()) { ; } \
336  else rr::LoggingBuffer(level, __FILE__, __LINE__).stream()
337 #else
338 #define rrLog(level) \
339  if (true) { }\
340  else \
341  LoggingBuffer(level, __FILE__, __LINE__)
342 #endif
343 
344 #define rrLogFatal rrLog(Logger::LOG_FATAL)
345 #define rrLogCritical rrLog(Logger::LOG_CRITICAL)
346 #define rrLogErr rrLog(Logger::LOG_ERROR)
347 #define rrLogWarn rrLog(Logger::LOG_WARNING)
348 #define rrLogNotice rrLog(Logger::LOG_NOTICE)
349 #define rrLogInfo rrLog(Logger::LOG_INFORMATION)
350 #define rrLogDebug rrLog(Logger::LOG_DEBUG)
351 
352 } /* namespace rr */
353 
354 
355 #endif /* rrLoggerH */
The roadrunner logger.
Definition: rrLogger.h:63
Level
same as Poco level, repeat here to avoid including any Poco files as Poco is usually linked staticall...
Definition: rrLogger.h:71
Poco LogStream dumps to the log when a newline i.e.
Definition: rrLogger.h:36