aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2025-11-24 11:05:29 +0100
committerGitHub Enterprise <[email protected]>2025-11-24 11:05:29 +0100
commite5eccea44a3e6a80d3b24ad2113bfeea86c62827 (patch)
treebaad4e4a7ab43079e08e0842a67d16f6d5eb6404 /src
parentadd Deploy.md and ability to specify a version via --version (#663) (diff)
downloadzen-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.cpp41
-rw-r--r--src/zenserver/diag/logging.h2
-rw-r--r--src/zenserver/zenserver.cpp2
-rw-r--r--src/zenutil/include/zenutil/logging/rotatingfilesink.h10
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