diff --git a/common/include/util.hpp b/common/include/util.hpp
index 1ab894349364cbe1dc29bcff089937c2d0ee885f..c031dee88a8bb28b67d75948ab09d4d0f65ceb1d 100644
--- a/common/include/util.hpp
+++ b/common/include/util.hpp
@@ -54,6 +54,8 @@ bool isSeparator(utf8char c);
 
 bool isIllegal(utf8char c);
 
+std::string getTime();
+
 template <typename T>
 bool isEmpty(const std::vector<T> & s)
 {
diff --git a/common/src/util.cpp b/common/src/util.cpp
index 23f5a6e0af99c9066d90518a08bb5773e225a82f..e5b501609c14ae34ff3dacab6487db2a3104163a 100644
--- a/common/src/util.cpp
+++ b/common/src/util.cpp
@@ -186,3 +186,14 @@ std::vector<std::filesystem::path> util::findFilesByExtension(std::filesystem::p
   return files;
 }
 
+std::string util::getTime()
+{
+  std::time_t rawtime;
+  char buffer[80];
+
+  std::time(&rawtime);
+
+  std::strftime(buffer, sizeof(buffer), "%H:%M:%S", std::localtime(&rawtime));
+  return std::string(buffer);
+}
+
diff --git a/trainer/src/MacaonTrain.cpp b/trainer/src/MacaonTrain.cpp
index 3df1365266758b5044b5b65db86221a807b05dbf..5f5db36efb2de7ce50e77dc29121b85a6c0a032d 100644
--- a/trainer/src/MacaonTrain.cpp
+++ b/trainer/src/MacaonTrain.cpp
@@ -92,7 +92,7 @@ int MacaonTrain::main()
   bool printAdvancement = !debug && variables.count("silent") == 0 ? true : false;
   bool computeDevScore = variables.count("devScore") == 0 ? false : true;
 
-  fmt::print(stderr, "Training using device : {}\n", NeuralNetworkImpl::device.str());
+  fmt::print(stderr, "[{}] Training using device : {}\n", util::getTime(), NeuralNetworkImpl::device.str());
 
   try
   {
@@ -159,10 +159,9 @@ int MacaonTrain::main()
       bestDevScore = devScoreMean;
       machine.save();
     }
-    if (debug)
-      fmt::print(stderr, "Epoch {:^5} loss = {:6.1f} dev = {} {:5}\n", fmt::format("{}/{}", i+1, nbEpoch), loss, devScoresStr, saved ? "SAVED" : "");
-    else
-      fmt::print(stderr, "\r{:80}\rEpoch {:^5} loss = {:6.1f} dev = {} {:5}\n", " ", fmt::format("{}/{}", i+1, nbEpoch), loss, devScoresStr, saved ? "SAVED" : "");
+    if (!debug)
+      fmt::print(stderr, "\r{:80}\r", "");
+    fmt::print(stderr, "[{}] Epoch {:^5} loss = {:6.1f} dev = {} {:5}\n", util::getTime(), fmt::format("{}/{}", i+1, nbEpoch), loss, devScoresStr, saved ? "SAVED" : "");
   }
 
   }