Salome HOME
[EDF29150] : Finalize Performance mechanism
[modules/kernel.git] / src / Basics / libSALOMELog.cxx
index c88e0b27084835f02a013abc9ac0f4820d5f0869..fab89f5d1e6a74e935a3aaff2e1971fb8fed4443 100644 (file)
 #include <iostream>
 #include <stdexcept>
 
+#include <chrono>
+#include <iomanip>
+#include <ctime>
+
 enum class VerbosityMode { undefined, nolog, withlog };
 
 static VerbosityMode isActivated = VerbosityMode::undefined;
@@ -180,4 +184,16 @@ namespace SALOME
   {
     return VerbosityLevel() >= VerbosityLevelType::error_level;
   }
+
+  void AppendTimeClock(std::ostream& os)
+  {
+    auto now = std::chrono::system_clock::now();
+    auto duration = now.time_since_epoch();
+    auto timestamp = std::chrono::system_clock::to_time_t(now);
+    std::tm *local_time = std::localtime(&timestamp);
+    auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
+    os  << std::setfill('0') << std::setw(2) << local_time->tm_hour << ":"
+        << std::setw(2) << local_time->tm_min << ":"
+        << std::setw(2) << local_time->tm_sec << "." << std::setw(3) << millis % 1000 << " - ";
+  }
 }