diff --git a/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXPlotter/ArmarXPlotter.cpp b/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXPlotter/ArmarXPlotter.cpp
index c0021acd3478a5906ca01142a198dd8238db81a6..31321746833c29ae7e6061b8e5372ce450356d84 100644
--- a/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXPlotter/ArmarXPlotter.cpp
+++ b/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXPlotter/ArmarXPlotter.cpp
@@ -238,6 +238,8 @@ namespace armarx
 
     void ArmarXPlotter::toggleLogging(bool toggled)
     {
+        std::lock_guard<std::mutex> lock(mutex);
+
         if (toggled)
         {
             std::string filename = "datalog-" + IceUtil::Time::now().toDateTime() + ".csv";
@@ -266,6 +268,8 @@ namespace armarx
         }
         else
         {
+            logstream.flush();
+            ARMARX_INFO << "done writing log";
             logstream.close();
         }
     }
diff --git a/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXPlotter/ArmarXPlotter.h b/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXPlotter/ArmarXPlotter.h
index 2bf57ee936be87ae041fb84f225ab512077eaf6f..6a66a67ca50e903345cdeb5429a27bfb2e1c9a80 100644
--- a/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXPlotter/ArmarXPlotter.h
+++ b/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXPlotter/ArmarXPlotter.h
@@ -49,6 +49,7 @@
 
 #include <vector>
 #include <fstream>
+#include <mutex>
 
 //forward declarations
 class QwtPlotCurve;
@@ -209,6 +210,8 @@ namespace armarx
         std::map<std::string, QwtThermo*> bars;
         void clearBarList();
 
+        std::mutex mutex;
+
 
     };