Add log_remove_output and log_deregister_thread
authorPerttu Ahola <celeron55@gmail.com>
Sun, 27 Nov 2011 11:52:10 +0000 (13:52 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Tue, 29 Nov 2011 17:13:55 +0000 (19:13 +0200)
src/log.cpp
src/log.h

index cc981dadd25bf63a23bea52bd6280f9a93a654fb..188b9b679e9c930f552bd1fbeadbfc4f423fb3ab 100644 (file)
@@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include <map>
 #include <list>
 #include <sstream>
+#include <algorithm>
 #include "threads.h"
 #include "debug.h"
 #include "gettime.h"
@@ -46,12 +47,28 @@ void log_add_output_all_levs(ILogOutput *out)
                log_outputs[i].push_back(out);
 }
 
+void log_remove_output(ILogOutput *out)
+{
+       for(int i=0; i<LMT_NUM_VALUES; i++){
+               std::list<ILogOutput*>::iterator it =
+                               std::find(log_outputs[i].begin(), log_outputs[i].end(), out);
+               if(it != log_outputs[i].end())
+                       log_outputs[i].erase(it);
+       }
+}
+
 void log_register_thread(const std::string &name)
 {
        threadid_t id = get_current_thread_id();
        log_threadnames[id] = name;
 }
 
+void log_deregister_thread()
+{
+       threadid_t id = get_current_thread_id();
+       log_threadnames.erase(id);
+}
+
 static std::string get_lev_string(enum LogMessageLevel lev)
 {
        switch(lev){
index a5e840a4d13c8881914333686834a97efd31e0a4..1d087429cd09f04ecaedfa33096a10ca6177a5fe 100644 (file)
--- a/src/log.h
+++ b/src/log.h
@@ -48,8 +48,10 @@ public:
 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_register_thread(const std::string &name);
+void log_deregister_thread();
 
 void log_printline(enum LogMessageLevel lev, const std::string &text);