Implemented J2K desc to/from MD
[asdcplib.git] / src / KM_log.cpp
index 21c3df72c3fe6292a12ff796cbb84ddc00f133a5..d820dba50df002aaf82e652c664d765e829dd386 100755 (executable)
@@ -90,7 +90,8 @@ Kumu::DefaultLogSink()
 void
 Kumu::EntryListLogSink::WriteEntry(const LogEntry& Entry)
 {
-  AutoMutex L(m_Lock);
+  AutoMutex L(m_lock);
+  WriteEntryToListeners(Entry);
 
   if ( Entry.TestFilter(m_filter) )
     m_Target.push_back(Entry);
@@ -102,13 +103,15 @@ Kumu::EntryListLogSink::WriteEntry(const LogEntry& Entry)
 void
 Kumu::StdioLogSink::WriteEntry(const LogEntry& Entry)
 {
-  AutoMutex L(m_Lock);
   std::string buf;
+  AutoMutex L(m_lock);
+  WriteEntryToListeners(Entry);
 
   if ( Entry.TestFilter(m_filter) )
     {
       Entry.CreateStringWithOptions(buf, m_options);
       fputs(buf.c_str(), m_stream);
+      fflush(m_stream);
     }
 }
 
@@ -121,8 +124,9 @@ Kumu::StdioLogSink::WriteEntry(const LogEntry& Entry)
 void
 Kumu::WinDbgLogSink::WriteEntry(const LogEntry& Entry)
 {
-  AutoMutex L(m_Lock);
   std::string buf;
+  AutoMutex L(m_lock);
+  WriteEntryToListeners(Entry);
 
   if ( Entry.TestFilter(m_filter) )
     {
@@ -140,13 +144,15 @@ Kumu::WinDbgLogSink::WriteEntry(const LogEntry& Entry)
 void
 Kumu::StreamLogSink::WriteEntry(const LogEntry& Entry)
 {
-  AutoMutex L(m_Lock);
   std::string buf;
+  AutoMutex L(m_lock);
+  WriteEntryToListeners(Entry);
 
   if ( Entry.TestFilter(m_filter) )
     {
       Entry.CreateStringWithOptions(buf, m_options);
-      write(m_fd, buf.c_str(), buf.size());
+      ssize_t n = write(m_fd, buf.c_str(), buf.size());
+      assert(n==buf.size());
     }
 }
 
@@ -199,7 +205,8 @@ Kumu::SyslogLogSink::WriteEntry(const LogEntry& Entry)
     case Kumu::LOG_DEBUG:   priority = SYSLOG_DEBUG; break;
     }
 
-  AutoMutex L(m_Lock);
+  AutoMutex L(m_lock);
+  WriteEntryToListeners(Entry);
 
   if ( Entry.TestFilter(m_filter) )
     {