From 093b1b47d9c874b5d7d17e720f1f68f00d7c000e Mon Sep 17 00:00:00 2001 From: kwolekr Date: Fri, 12 Dec 2014 15:12:31 -0500 Subject: [PATCH] Log: Silence errorstream during unittests --- src/log.cpp | 18 ++++++++++++++++++ src/log.h | 9 ++++++++- src/test.cpp | 4 ++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/log.cpp b/src/log.cpp index ff2e16333..8ed1f7694 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -60,6 +60,21 @@ void log_remove_output(ILogOutput *out) } } +void log_set_lev_silence(enum LogMessageLevel lev, bool silence) +{ + log_threadnamemutex.Lock(); + + for (std::list::iterator + it = log_outputs[lev].begin(); + it != log_outputs[lev].end(); + ++it) { + ILogOutput *out = *it; + out->silence = silence; + } + + log_threadnamemutex.Unlock(); +} + void log_register_thread(const std::string &name) { threadid_t id = get_current_thread_id(); @@ -107,6 +122,9 @@ void log_printline(enum LogMessageLevel lev, const std::string &text) for(std::list::iterator i = log_outputs[lev].begin(); i != log_outputs[lev].end(); i++){ ILogOutput *out = *i; + if (out->silence) + continue; + out->printLog(os.str()); out->printLog(os.str(), lev); out->printLog(lev, text); diff --git a/src/log.h b/src/log.h index 7d8b60b71..6240e34ed 100644 --- a/src/log.h +++ b/src/log.h @@ -24,7 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., /* Use this for logging everything. - + If you need to explicitly print something, use dstream or cout or cerr. */ @@ -39,18 +39,25 @@ enum LogMessageLevel { class ILogOutput { public: + ILogOutput() : + silence(false) + {} + /* line: Full line with timestamp, level and thread */ virtual void printLog(const std::string &line){}; /* line: Full line with timestamp, level and thread */ virtual void printLog(const std::string &line, enum LogMessageLevel lev){}; /* line: Only actual printed text */ virtual void printLog(enum LogMessageLevel lev, const std::string &line){}; + + bool silence; }; void log_add_output(ILogOutput *out, enum LogMessageLevel lev); void log_add_output_maxlev(ILogOutput *out, enum LogMessageLevel lev); void log_add_output_all_levs(ILogOutput *out); void log_remove_output(ILogOutput *out); +void log_set_lev_silence(enum LogMessageLevel lev, bool silence); void log_register_thread(const std::string &name); void log_deregister_thread(); diff --git a/src/test.cpp b/src/test.cpp index 072bda8ef..fa18989e5 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -2177,6 +2177,8 @@ void run_tests() IWritableNodeDefManager *ndef = createNodeDefManager(); define_some_nodes(idef, ndef); + log_set_lev_silence(LMT_ERROR, true); + infostream<<"run_tests() started"<