diff options
| author | Stefan Boberg <[email protected]> | 2025-03-12 13:21:50 +0100 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2025-03-12 13:21:50 +0100 |
| commit | 4c14a6aa786856e0c8966ce34f152502eb63085e (patch) | |
| tree | 0c81b887b3ad4e1feac6c8ef5d1a530b2b460b00 | |
| parent | add GetTimeSinceProcessStart returning time since process start (diff) | |
| download | zen-4c14a6aa786856e0c8966ce34f152502eb63085e.tar.xz zen-4c14a6aa786856e0c8966ce34f152502eb63085e.zip | |
fix log timestamps
- fix fractions when using epoch mode. Previously it would show the fraction from the absolute time stamp and not relative to epoch
- used GetTimeSinceProcessStart to offset the epoch so that it represents the process spawn time
| -rw-r--r-- | src/zenutil/include/zenutil/logging/fullformatter.h | 7 | ||||
| -rw-r--r-- | src/zenutil/logging.cpp | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/zenutil/include/zenutil/logging/fullformatter.h b/src/zenutil/include/zenutil/logging/fullformatter.h index 07ad408fa..0326870e5 100644 --- a/src/zenutil/include/zenutil/logging/fullformatter.h +++ b/src/zenutil/include/zenutil/logging/fullformatter.h @@ -45,6 +45,8 @@ public: std::chrono::seconds TimestampSeconds; + std::chrono::milliseconds millis; + if (m_UseFullDate) { TimestampSeconds = std::chrono::duration_cast<std::chrono::seconds>(msg.time.time_since_epoch()); @@ -69,6 +71,8 @@ public: spdlog::details::fmt_helper::pad2(m_CachedLocalTm.tm_sec, m_CachedDatetime); m_CachedDatetime.push_back('.'); } + + millis = spdlog::details::fmt_helper::time_fraction<std::chrono::milliseconds>(msg.time); } else { @@ -97,6 +101,8 @@ public: spdlog::details::fmt_helper::pad2(LogSecs, m_CachedDatetime); m_CachedDatetime.push_back('.'); } + + millis = std::chrono::duration_cast<std::chrono::milliseconds>(ElapsedTime - TimestampSeconds); } { @@ -104,7 +110,6 @@ public: OutBuffer.append(m_CachedDatetime.begin(), m_CachedDatetime.end()); } - auto millis = spdlog::details::fmt_helper::time_fraction<std::chrono::milliseconds>(msg.time); spdlog::details::fmt_helper::pad3(static_cast<uint32_t>(millis.count()), OutBuffer); OutBuffer.push_back(']'); OutBuffer.push_back(' '); diff --git a/src/zenutil/logging.cpp b/src/zenutil/logging.cpp index 762b75a59..cb0fd6679 100644 --- a/src/zenutil/logging.cpp +++ b/src/zenutil/logging.cpp @@ -16,6 +16,7 @@ ZEN_THIRD_PARTY_INCLUDES_END #include <zencore/logging.h> #include <zencore/memory/llm.h> #include <zencore/string.h> +#include <zencore/timer.h> #include <zenutil/logging/fullformatter.h> #include <zenutil/logging/jsonformatter.h> #include <zenutil/logging/rotatingfilesink.h> @@ -191,8 +192,9 @@ FinishInitializeLogging(const LoggingOptions& LogOptions) logging::RefreshLogLevels(LogLevel); spdlog::flush_on(spdlog::level::err); spdlog::flush_every(std::chrono::seconds{2}); - spdlog::set_formatter( - std::make_unique<logging::full_formatter>(LogOptions.LogId, std::chrono::system_clock::now())); // default to duration prefix + spdlog::set_formatter(std::make_unique<logging::full_formatter>( + LogOptions.LogId, + std::chrono::system_clock::now() - std::chrono::milliseconds(GetTimeSinceProcessStart()))); // default to duration prefix if (g_FileSink) { |