Salome HOME
[EDF29150] : Finalize Performance mechanism
[modules/kernel.git] / src / Basics / libSALOMELog.cxx
index 6c0cd55a85f63e512a8b59338901314a594b2d5c..fab89f5d1e6a74e935a3aaff2e1971fb8fed4443 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #include <iostream>
 #include <stdexcept>
 
+#include <chrono>
+#include <iomanip>
+#include <ctime>
+
 enum class VerbosityMode { undefined, nolog, withlog };
 
 static VerbosityMode isActivated = VerbosityMode::undefined;
@@ -146,7 +150,7 @@ namespace SALOME
     return verbosityLevel;
   }
 
-  void BASICS_EXPORT SetVerbosityLevel(VerbosityLevelType level)
+  void SetVerbosityLevel(VerbosityLevelType level)
   {
     verbosityLevel = level;
   }
@@ -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 << " - ";
+  }
 }