aboutsummaryrefslogtreecommitdiffstats
path: root/logging.h
diff options
context:
space:
mode:
Diffstat (limited to 'logging.h')
-rw-r--r--logging.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/logging.h b/logging.h
index 5a23303..dc610f0 100644
--- a/logging.h
+++ b/logging.h
@@ -31,12 +31,16 @@ class logger {
};
//
+ static Level currentLevel;
+
logger(string prefix, logger::Level level) : m_prefix(prefix), m_level(level) {
}
~logger() {
#ifdef CROW_ENABLE_LOGGING
- cerr << "(" << timeStamp() << ") [" << m_prefix << "] " << m_stringStream.str() << endl;
+ if(m_level <= currentLevel) {
+ cerr << "(" << timeStamp() << ") [" << m_prefix << "] " << m_stringStream.str() << endl;
+ }
#endif
}
@@ -45,12 +49,19 @@ class logger {
logger& operator<<(T const &value) {
#ifdef CROW_ENABLE_LOGGING
- m_stringStream << value;
+ if(m_level <= currentLevel) {
+ m_stringStream << value;
+ }
#endif
return *this;
}
- private:
+ //
+ static void setLogLevel(logger::Level level) {
+ currentLevel = level;
+ }
+
+ private:
//
ostringstream m_stringStream;
@@ -58,6 +69,9 @@ class logger {
Level m_level;
};
+//
+logger::Level logger::currentLevel = (Level)CROW_LOG_LEVEL;
+
#define CROW_LOG_CRITICAL logger("CRITICAL", logger::Level::CRITICAL)
#define CROW_LOG_ERROR logger("ERROR ", logger::Level::ERROR)
#define CROW_LOG_WARNING logger("WARNING ", logger::Level::WARNING)