diff options
| author | Stefan Boberg <[email protected]> | 2025-11-24 11:05:29 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-11-24 11:05:29 +0100 |
| commit | e5eccea44a3e6a80d3b24ad2113bfeea86c62827 (patch) | |
| tree | baad4e4a7ab43079e08e0842a67d16f6d5eb6404 /src | |
| parent | add Deploy.md and ability to specify a version via --version (#663) (diff) | |
| download | zen-e5eccea44a3e6a80d3b24ad2113bfeea86c62827.tar.xz zen-e5eccea44a3e6a80d3b24ad2113bfeea86c62827.zip | |
logging improvements (#664)
* Eliminate spurious `FlushFileBuffers` calls on Windows by tracking writes
* Make cache log file creation optional
Diffstat (limited to 'src')
| -rw-r--r-- | src/zenserver/diag/logging.cpp | 41 | ||||
| -rw-r--r-- | src/zenserver/diag/logging.h | 2 | ||||
| -rw-r--r-- | src/zenserver/zenserver.cpp | 2 | ||||
| -rw-r--r-- | src/zenutil/include/zenutil/logging/rotatingfilesink.h | 10 |
4 files changed, 34 insertions, 21 deletions
diff --git a/src/zenserver/diag/logging.cpp b/src/zenserver/diag/logging.cpp index 90af79651..80da240e8 100644 --- a/src/zenserver/diag/logging.cpp +++ b/src/zenserver/diag/logging.cpp @@ -21,7 +21,7 @@ ZEN_THIRD_PARTY_INCLUDES_END namespace zen { void -InitializeServerLogging(const ZenServerConfig& InOptions) +InitializeServerLogging(const ZenServerConfig& InOptions, bool WithCacheService) { ZEN_MEMSCOPE(ELLMTag::Logging); @@ -51,29 +51,32 @@ InitializeServerLogging(const ZenServerConfig& InOptions) spdlog::apply_logger_env_levels(HttpLogger); spdlog::register_logger(HttpLogger); - // Cache request logging - std::filesystem::path CacheLogPath = InOptions.DataDir / "logs" / "z$.log"; - zen::CreateDirectories(CacheLogPath.parent_path()); + if (WithCacheService) + { + // Cache request logging + std::filesystem::path CacheLogPath = InOptions.DataDir / "logs" / "z$.log"; + zen::CreateDirectories(CacheLogPath.parent_path()); - auto CacheSink = std::make_shared<zen::logging::RotatingFileSink>(CacheLogPath, - /* max size */ 128 * 1024 * 1024, - /* max files */ 16, - /* rotate on open */ false); - auto CacheLogger = std::make_shared<spdlog::logger>("z$", CacheSink); - spdlog::apply_logger_env_levels(CacheLogger); - spdlog::register_logger(CacheLogger); + auto CacheSink = std::make_shared<zen::logging::RotatingFileSink>(CacheLogPath, + /* max size */ 128 * 1024 * 1024, + /* max files */ 16, + /* rotate on open */ false); + auto CacheLogger = std::make_shared<spdlog::logger>("z$", CacheSink); + spdlog::apply_logger_env_levels(CacheLogger); + spdlog::register_logger(CacheLogger); - // Jupiter - only log upstream HTTP traffic to file + // Jupiter - only log upstream HTTP traffic to file - auto JupiterLogger = std::make_shared<spdlog::logger>("jupiter", FileSink); - spdlog::apply_logger_env_levels(JupiterLogger); - spdlog::register_logger(JupiterLogger); + auto JupiterLogger = std::make_shared<spdlog::logger>("jupiter", FileSink); + spdlog::apply_logger_env_levels(JupiterLogger); + spdlog::register_logger(JupiterLogger); - // Zen - only log upstream HTTP traffic to file + // Zen - only log upstream HTTP traffic to file - auto ZenClientLogger = std::make_shared<spdlog::logger>("zenclient", FileSink); - spdlog::apply_logger_env_levels(ZenClientLogger); - spdlog::register_logger(ZenClientLogger); + auto ZenClientLogger = std::make_shared<spdlog::logger>("zenclient", FileSink); + spdlog::apply_logger_env_levels(ZenClientLogger); + spdlog::register_logger(ZenClientLogger); + } // diff --git a/src/zenserver/diag/logging.h b/src/zenserver/diag/logging.h index 4b27a50cf..9a85eb719 100644 --- a/src/zenserver/diag/logging.h +++ b/src/zenserver/diag/logging.h @@ -8,7 +8,7 @@ namespace zen { struct ZenServerConfig; -void InitializeServerLogging(const ZenServerConfig& LogOptions); +void InitializeServerLogging(const ZenServerConfig& LogOptions, bool WithCacheService); void ShutdownServerLogging(); } // namespace zen diff --git a/src/zenserver/zenserver.cpp b/src/zenserver/zenserver.cpp index 5408f2f0b..e83624bbb 100644 --- a/src/zenserver/zenserver.cpp +++ b/src/zenserver/zenserver.cpp @@ -505,7 +505,7 @@ ZenServerMain::Run() } } - InitializeServerLogging(m_ServerOptions); + InitializeServerLogging(m_ServerOptions, /* WithCacheService */ true); ZEN_INFO("Command line: {}", m_ServerOptions.CommandLine); diff --git a/src/zenutil/include/zenutil/logging/rotatingfilesink.h b/src/zenutil/include/zenutil/logging/rotatingfilesink.h index 5c6c655b8..4d10f3794 100644 --- a/src/zenutil/include/zenutil/logging/rotatingfilesink.h +++ b/src/zenutil/include/zenutil/logging/rotatingfilesink.h @@ -114,6 +114,11 @@ public: } virtual void flush() override { + if (!m_NeedFlush) + { + return; + } + ZEN_MEMSCOPE(ELLMTag::Logging); try @@ -128,6 +133,8 @@ public: { // Silently eat errors } + + m_NeedFlush = false; } virtual void set_pattern(const std::string& pattern) override @@ -204,6 +211,7 @@ private: { return false; } + m_NeedFlush = true; return true; } @@ -229,6 +237,7 @@ private: { return false; } + m_NeedFlush = true; return true; } @@ -239,6 +248,7 @@ private: const std::size_t m_MaxSize; const std::size_t m_MaxFiles; BasicFile m_CurrentFile; + bool m_NeedFlush = false; }; } // namespace zen::logging |