Log: Silence errorstream during unittests

This commit is contained in:
kwolekr 2014-12-12 15:12:31 -05:00
parent 10e0cf8b2c
commit 093b1b47d9
3 changed files with 30 additions and 1 deletions

View File

@ -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<ILogOutput *>::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) void log_register_thread(const std::string &name)
{ {
threadid_t id = get_current_thread_id(); threadid_t id = get_current_thread_id();
@ -107,6 +122,9 @@ void log_printline(enum LogMessageLevel lev, const std::string &text)
for(std::list<ILogOutput*>::iterator i = log_outputs[lev].begin(); for(std::list<ILogOutput*>::iterator i = log_outputs[lev].begin();
i != log_outputs[lev].end(); i++){ i != log_outputs[lev].end(); i++){
ILogOutput *out = *i; ILogOutput *out = *i;
if (out->silence)
continue;
out->printLog(os.str()); out->printLog(os.str());
out->printLog(os.str(), lev); out->printLog(os.str(), lev);
out->printLog(lev, text); out->printLog(lev, text);

View File

@ -24,7 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
/* /*
Use this for logging everything. Use this for logging everything.
If you need to explicitly print something, use dstream or cout or cerr. If you need to explicitly print something, use dstream or cout or cerr.
*/ */
@ -39,18 +39,25 @@ enum LogMessageLevel {
class ILogOutput class ILogOutput
{ {
public: public:
ILogOutput() :
silence(false)
{}
/* line: Full line with timestamp, level and thread */ /* line: Full line with timestamp, level and thread */
virtual void printLog(const std::string &line){}; virtual void printLog(const std::string &line){};
/* line: Full line with timestamp, level and thread */ /* line: Full line with timestamp, level and thread */
virtual void printLog(const std::string &line, enum LogMessageLevel lev){}; virtual void printLog(const std::string &line, enum LogMessageLevel lev){};
/* line: Only actual printed text */ /* line: Only actual printed text */
virtual void printLog(enum LogMessageLevel lev, const std::string &line){}; 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(ILogOutput *out, enum LogMessageLevel lev);
void log_add_output_maxlev(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_add_output_all_levs(ILogOutput *out);
void log_remove_output(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_register_thread(const std::string &name);
void log_deregister_thread(); void log_deregister_thread();

View File

@ -2177,6 +2177,8 @@ void run_tests()
IWritableNodeDefManager *ndef = createNodeDefManager(); IWritableNodeDefManager *ndef = createNodeDefManager();
define_some_nodes(idef, ndef); define_some_nodes(idef, ndef);
log_set_lev_silence(LMT_ERROR, true);
infostream<<"run_tests() started"<<std::endl; infostream<<"run_tests() started"<<std::endl;
TEST(TestUtilities); TEST(TestUtilities);
TEST(TestPath); TEST(TestPath);
@ -2198,6 +2200,8 @@ void run_tests()
dout_con<<"=== END RUNNING UNIT TESTS FOR CONNECTION ==="<<std::endl; dout_con<<"=== END RUNNING UNIT TESTS FOR CONNECTION ==="<<std::endl;
} }
log_set_lev_silence(LMT_ERROR, false);
delete idef; delete idef;
delete ndef; delete ndef;