diff --git a/include/utils/logger.h b/include/utils/logger.h
index 04241522bf59a1aa8cd51d0c8e767c0149c7ef48..84d6b12894681d3de8a6e55230938ee964909d67 100644
--- a/include/utils/logger.h
+++ b/include/utils/logger.h
@@ -1,10 +1,16 @@
 #ifndef LOGGER_H
 #define LOGGER_H
+#include <stdarg.h>
 
 
 /**
  * Write the message passed in parameter in the tracefile
  */
-void tracemessage(char *msg);
+void vtracemessage(char *fmt, va_list ap);
+
+/**
+ * Write the message passed in parameter in the tracefile
+ */
+void tracemessage(char *fmt, ...);
 
 #endif
diff --git a/src/utils/logger.c b/src/utils/logger.c
index 39dc5a01f48f742cc95a727b7ebdc0163506dc92..c293168b42968e0bc01e01a72b8a3dc30636cb5e 100644
--- a/src/utils/logger.c
+++ b/src/utils/logger.c
@@ -1,7 +1,7 @@
 #include "utils/logger.h"
 #include "logglobals.h"
 
-void tracemessage(char *msg)
+void vtracemessage(char *fmt, va_list ap)
 {
 	if (!gg.traceflag)
 		return;
@@ -26,5 +26,14 @@ void tracemessage(char *msg)
 		gg.traceopen = true;
 	}
 	
-	fprintf(tracefile, "%s\n", msg);
+	vfprintf(tracefile, fmt, ap);
+}
+
+void tracemessage(char *fmt, ...)
+{
+
+	va_list ap;
+	va_start(ap, fmt);
+	vtracemessage(fmt, ap);
+	va_end(ap);
 }