diff --git a/Makefile.in b/Makefile.in
index 749fa170cc860dbe2a5692e728dfbf7903021df9..beaae05707d6942475b0cde4bb7a15ae02fdf138 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -37,7 +37,7 @@ start:
 	@echo Starting the web server on 0.0.0.0:${WEBSERVER_PORT}
 	@#
 	@tmux send-keys -t ${SESSION_NAME}:main.3  \
-	    "gunicorn -w 4 -b 0.0.0.0:${WEBSERVER_PORT} km3mon:app" Enter
+	    "gunicorn --pid gunicorn.pid -w 4 -b 0.0.0.0:${WEBSERVER_PORT} km3mon:app" Enter
 	@tmux select-layout even-vertical
 
 	@echo Starting the monitoring scripts
@@ -91,17 +91,21 @@ start:
 	    "python scripts/ahrs_calibration.py -d ${DETECTOR_ID} -p ${MONITORING_LIGIER_PORT}" Enter
 	@tmux select-layout even-vertical
 
-	@# Log.io
+	@# Logs
 	@#
-	@tmux new-window -n logio -t ${SESSION_NAME}
-	@tmux split-window -v -t ${SESSION_NAME}:logio
-	@tmux send-keys -t ${SESSION_NAME}:logio.1  \
-	    "python scripts/logio.py -p ${MONITORING_LIGIER_PORT} -x ${LOGIO_IP} -q ${LOGIO_PORT}" Enter
+	@tmux new-window -n log -t ${SESSION_NAME}
+	@tmux split-window -v -t ${SESSION_NAME}:log
+	@tmux send-keys -t ${SESSION_NAME}:log.1  \
+	    "python scripts/msg_dumper.py -l 127.0.0.1 -p ${MONITORING_LIGIER_PORT} -f logs/MSG.log" Enter
+	@tmux send-keys -t ${SESSION_NAME}:log.2  \
+	    "touch logs/MSG.log && frontail logs/*.log --ui-highlight --ui-highlight-preset frontail.json --theme dark -l 10000 -n 200 -p 8082" Enter
 	@tmux select-layout even-vertical
 
 stop:
+	@echo Stopping monitoring session...
 	tmux kill-session -t ${SESSION_NAME}
-	killall gunicorn
+	kill -9 $(shell cat gunicorn.pid)
+	@sleep 5
 
 clean:
 	rm Makefile
diff --git a/logs/.gitkeep b/logs/.gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/scripts/msg_dumper.py b/scripts/msg_dumper.py
index 66e9d2d0c8d6c1e6f5b9c62d63fc21b4e1f1e61a..036647cb9e6b7135bb0822fff73b92343ebd6716 100755
--- a/scripts/msg_dumper.py
+++ b/scripts/msg_dumper.py
@@ -42,6 +42,7 @@ class MSGDumper(Module):
         entry = "{} [{}]: {}\n".format(
             os.path.basename(self.filename), source, data)
         self.fobj.write(entry)
+        self.fobj.flush()
         return blob
 
     def finish(self):
diff --git a/scripts/pmt_rates.py b/scripts/pmt_rates.py
index e726325c44ecc1dad0a59d0f65d103868ab516f3..df75d52dc5926c5252f9d6e5752cebd72f5fb829 100755
--- a/scripts/pmt_rates.py
+++ b/scripts/pmt_rates.py
@@ -96,7 +96,7 @@ class PMTRates(kp.Module):
 
     def update_plot(self):
         filename = os.path.join(self.plot_path, self.filename)
-        print("Updating plot at {}".format(filename))
+        self.log.debug("Updating plot at {}".format(filename))
         now = time.time()
         max_x = self.max_x
         interval = self.interval
diff --git a/scripts/ztplot.py b/scripts/ztplot.py
index 4934e28d60641eb823c3113b7dee18f99d5d28dc..9fe769b38298559daf693073bf1b213b512e6754 100755
--- a/scripts/ztplot.py
+++ b/scripts/ztplot.py
@@ -60,6 +60,7 @@ class ZTPlot(Module):
     def configure(self):
         self.plots_path = self.require('plots_path')
         self.ytick_distance = self.get('ytick_distance', default=200)
+        self.min_dus = self.get('min_dus', default=1)
         det_id = self.require('det_id')
         self.calib = kp.calib.Calibration(det_id=det_id)
 
@@ -78,7 +79,7 @@ class ZTPlot(Module):
         event_info = blob['EventInfo']
 
         n_triggered_dus = np.unique(hits[hits.triggered == True].du)
-        if n_triggered_dus < 1:
+        if n_triggered_dus < self.min_dus:
             print("Skipping...")
             return blob