diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py
index 7fe8ba81f4c7f6c2bf93ecfd0195b37fe9a5d970..5f8dbe16c9716d645c2db60b6754bdbdb83e48cf 100644
--- a/Ccs/ccs_function_lib.py
+++ b/Ccs/ccs_function_lib.py
@@ -344,7 +344,7 @@ def is_open(name, instance=1):
         dbus_type.get_object(Bus_Name, '/MessageListener')
         return True
     except Exception as err:
-        logger.info(err)
+        logger.debug(err)
         return False
 
 
@@ -4581,7 +4581,7 @@ def collect_13(pool_name, starttime=None, endtime=None, startidx=None, endidx=No
                sdu=None, verbose=True):
 
     if not os.path.isfile(pool_name):
-        logger.debug('{} is not a file, looking it up in DB')
+        logger.debug('{} is not a file, looking it up in DB'.format(pool_name))
         # try fetching pool info from pools opened in viewer
         # pname = _get_displayed_pool_path(pool_name)
         # if pname:
diff --git a/Ccs/editor.py b/Ccs/editor.py
index c89e972d6f732fb89c5536d1bb05322f075a9c31..c7655993f0d2ce6b15c3041fb459c73daa52b804 100644
--- a/Ccs/editor.py
+++ b/Ccs/editor.py
@@ -31,6 +31,8 @@ action_folder = cfg.get('ccs-paths', 'actions')
 scripts = glob.glob(os.path.join(cfg.get('paths', 'ccs'), "scripts/*.py"))
 script_actions = '\n'.join(["<menuitem action='{}' />".format(os.path.split(script)[-1][:-3]) for script in scripts])
 
+LOG_UPDT_PER = 2000  # ms
+
 UI_INFO = """
 <ui>
   <menubar name='MenuBar'>
@@ -68,6 +70,7 @@ UI_INFO = """
       <menuitem action='ActionButtons' />
       <menuitem action='ReconnectSQL' />
       <menuitem action='RestartTerminal' />
+      <menuitem action='ClearLog' />
     </menu>
     <menu action='ScriptsMenu'>
         {}    
@@ -211,9 +214,10 @@ class CcsEditor(Gtk.Window):
         self.nb.append_page(self.logwin, tab_label=Gtk.Label(label='Log', angle=270))
         self.paned.add2(self.nb)
 
-        self.log_file = None  # save the shown text from the log file tab
-        # Update the log-file view window every 2 seconds
-        GLib.timeout_add(2000, self.switch_notebook_page, self.logwin, self.logwintext, self.logbuffer)
+        self.log_file = None
+        self.log_file_text = None  # save the shown text from the log file tab
+        # Update the log-file view window every LOG_UPDT_PER milliseconds
+        GLib.timeout_add(LOG_UPDT_PER, self.switch_notebook_page, self.logwin, self.logwintext, self.logbuffer)
 
         self.ipython_view.connect("size-allocate", self.console_autoscroll, self.ipython_view)
 
@@ -708,6 +712,10 @@ class CcsEditor(Gtk.Window):
         action.connect("activate", self._on_restart_terminal)
         action_group.add_action(action)
 
+        action = Gtk.Action(name="ClearLog", label="_Clear Log", tooltip=None, stock_id=None)
+        action.connect("activate", self._on_clear_log)
+        action_group.add_action(action)
+
     def create_scripts_menu(self, action_group):
         action = Gtk.Action(name="ScriptsMenu", label="_Scripts", tooltip=None, stock_id=None)
         action_group.add_action(action)
@@ -1761,27 +1769,37 @@ class CcsEditor(Gtk.Window):
         filelist = glob.glob(os.path.join(self.logdir, '*.log'))
         filelist.sort(reverse=True)
         if not filelist:
-            self.logger.info('No log files to track!')
+            self.logger.warning('No log files to track!')
             return True
-        with open(filelist[0], 'r') as fd:
+        self.log_file = filelist[0]
+        with open(self.log_file, 'r') as fd:
             file = fd.read()
-        if self.log_file is None:
+        if self.log_file_text is None:
             logwin.remove(logwin.get_child())
-            buffer.set_text('CCS Applications Log ({}):\n'.format(os.path.basename(filelist[0])))
+            buffer.set_text('CCS Applications Log ({}):\n'.format(os.path.basename(self.log_file)))
             end = buffer.get_end_iter()
             buffer.insert(end, '\n')
             end = buffer.get_end_iter()
             buffer.insert(end, file)
             logwin.add(view)
         else:
-            new_text = file[len(self.log_file):]
+            new_text = file[len(self.log_file_text):]
             if new_text:
                 end = buffer.get_end_iter()
                 buffer.insert(end, new_text)
 
-        self.log_file = file
+        self.log_file_text = file
         return True
 
+    def _on_clear_log(self, *args):
+        try:
+            with open(self.log_file, 'w') as fd:
+                fd.write('{}.000: Log truncated\n'.format(time.strftime('%Y-%m-%d %H:%M:%S')))
+            self.log_file_text = None
+            self.switch_notebook_page(self.logwin, self.logwintext, self.logbuffer)
+        except Exception as err:
+            self.logger.error(err)
+
     def _on_set_style(self, widget):
         dialog = StyleChooserDialog(scheme=self.style_scheme)
 
diff --git a/Ccs/log_server.py b/Ccs/log_server.py
index 1d71757cc8ccbe66e4c855cfc9748bc752c8795c..36b7af180612984f80c35d12ee9efe7125ff4a32 100644
--- a/Ccs/log_server.py
+++ b/Ccs/log_server.py
@@ -143,7 +143,7 @@ def main():
         tcpserver.serve_until_stopped(cfg)
         logger.info('TCP-server for logging shutting down')
     # Catch exception if log_server is already running and address/port is already in use
-    except OSError:
+    except OSError as err:
         logger.info('TCP-server for logging seems to be already running.')
     except Exception as err:
         raise err
diff --git a/Ccs/plotter.py b/Ccs/plotter.py
index c378d4440a20424039229bb42cf9e3d4e3f1ffd2..695a68978b97ed68ee8195cde6cea440a433f892 100644
--- a/Ccs/plotter.py
+++ b/Ccs/plotter.py
@@ -254,7 +254,7 @@ class PlotViewer(Gtk.Window):
 
     def _create_navbar(self):
         # navbar = NavigationToolbarX(self.canvas, self)
-        navbar = NavigationToolbar(self.canvas, window=self)
+        navbar = NavigationToolbar(self.canvas)  # , window=self)
 
         limits = Gtk.HBox()
         self.xmin = Gtk.Entry()
@@ -485,7 +485,7 @@ class PlotViewer(Gtk.Window):
                         i += 1
                     if pool_info == tuple(found_pool):  # Check if pools match
                         x = True    # If at least one entry matches to the pool it is not necessary to add
-                    count +=1
+                    count += 1
                 if not x:   # Add a pool if it is not already in the model (liststore)
                     model.append([pool_info[0], pool_info[1], pool_info[2], pool_info[3]])
 
@@ -734,6 +734,7 @@ class PlotViewer(Gtk.Window):
             # rows = rows.filter(func.left(DbTelemetry.timestamp, func.length(DbTelemetry.timestamp) - 1) > 2.)
 
         try:
+            # TODO: speedup?
             xy, (descr, unit) = cfl.get_param_values([row.raw for row in rows.yield_per(1000)], hk, parameter,
                                                      numerical=True, tmfilter=False)
             if len(xy) == 0:
@@ -1272,8 +1273,6 @@ class PlotViewer(Gtk.Window):
                                      " = dbus.SessionBus().get_object('" + str(My_Bus_Name) +
                                      "', '/MessageListener')")
 
-
-        #####
         # Get the prev loaded Pools form Viewer and Manager if none is given
         self.update_pool_view()
         self.get_prev_loaded_pools()