diff --git a/daemon/src/logger.c b/daemon/src/logger.c
index 95eb81528ae6a3aea255361d907888b072e7e45c..4817f0441f84bbafd5a0cedca0005830e15abf41 100644
--- a/daemon/src/logger.c
+++ b/daemon/src/logger.c
@@ -44,6 +44,15 @@ void logger(const int level, const char* format, ...)
         return;
 
     va_list ap;
+    va_start(ap, format);
+    vlogger(level, format, ap);
+    va_end(ap);
+}
+
+void vlogger(const int level, const char *format, va_list ap)
+{
+    if (!debugMode && level == LOG_DEBUG)
+        return;
 
     if (consoleLog) {
         const char *color_prefix = "";
@@ -58,16 +67,10 @@ void logger(const int level, const char* format, ...)
         }
 
         fputs(color_prefix, stderr);
-
-        va_start(ap, format);
         vfprintf(stderr, format, ap);
-        va_end(ap);
-
         fputs(END_COLOR"\n", stderr);
     } else {
-        va_start(ap, format);
         vsyslog(level, format, ap);
-        va_end(ap);
     }
 }
 
diff --git a/daemon/src/logger.h b/daemon/src/logger.h
index 982fd345b42bff8844040fa7f1274e9a400fdc81..4a78abe18fea2a7c377b92381fe08069059bc4a0 100644
--- a/daemon/src/logger.h
+++ b/daemon/src/logger.h
@@ -35,10 +35,13 @@
 extern "C" {
 #endif
 
+#include <stdarg.h>
+
 /**
  * Print something, coloring it depending on the level
  */
 void logger(const int level, const char *format, ...);
+void vlogger(const int level, const char *format, va_list);
 
 /**
  * Allow writing on the console