aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/diag/logging.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-05-12 14:13:00 +0200
committerGitHub <[email protected]>2023-05-12 14:13:00 +0200
commit9b74445504fb20401c174241b93c99bf765b43ce (patch)
tree9e9ce2abe0f17c9ec327fb8fe3ecba4bea35f1c0 /src/zenserver/diag/logging.cpp
parentbetter logging/exception when reading file in IoBuffer::Materialize fails (#294) (diff)
downloadzen-9b74445504fb20401c174241b93c99bf765b43ce.tar.xz
zen-9b74445504fb20401c174241b93c99bf765b43ce.zip
implemented structured cache logging (#296)
may be used as audit trail to help analyse potential cache pollution/corruption * also added common header with timestamp to all known log targets * made `Oid::operator bool` explicit to avoid logging/text format mishaps * made `HttpClient::operator bool` explicit
Diffstat (limited to 'src/zenserver/diag/logging.cpp')
-rw-r--r--src/zenserver/diag/logging.cpp39
1 files changed, 32 insertions, 7 deletions
diff --git a/src/zenserver/diag/logging.cpp b/src/zenserver/diag/logging.cpp
index 24c7572f4..e6192c7c0 100644
--- a/src/zenserver/diag/logging.cpp
+++ b/src/zenserver/diag/logging.cpp
@@ -18,6 +18,8 @@ ZEN_THIRD_PARTY_INCLUDES_END
#include <zencore/compactbinary.h>
#include <zencore/filesystem.h>
+#include <zencore/fmtutils.h>
+#include <zencore/session.h>
#include <zencore/string.h>
#include <chrono>
@@ -415,30 +417,45 @@ InitializeLogging(const ZenServerOptions& GlobalOptions)
}
#endif
- // HTTP server request logging
+ std::vector<std::shared_ptr<spdlog::logger>> KnownLoggers{spdlog::default_logger()};
- std::filesystem::path HttpLogPath = GlobalOptions.DataDir / "logs" / "http.log";
+ auto RegisterLogger = [&](std::shared_ptr<spdlog::logger> Logger) {
+ spdlog::register_logger(Logger);
+ KnownLoggers.push_back(Logger);
+ };
+ // HTTP server request logging
+ std::filesystem::path HttpLogPath = GlobalOptions.DataDir / "logs" / "http.log";
// spdlog can't create directories that starts with `\\?\` so we make sure the folder exists before creating the logger instance
zen::CreateDirectories(HttpLogPath.parent_path());
-
auto HttpSink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(zen::PathToUtf8(HttpLogPath),
/* max size */ 128 * 1024 * 1024,
/* max files */ 16,
/* rotate on open */ true);
auto HttpLogger = std::make_shared<spdlog::logger>("http_requests", HttpSink);
- spdlog::register_logger(HttpLogger);
+ RegisterLogger(HttpLogger);
+
+ // Cache request logging
+ std::filesystem::path CacheLogPath = GlobalOptions.DataDir / "logs" / "z$.log";
+ zen::CreateDirectories(CacheLogPath.parent_path());
+ auto CacheSink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(zen::PathToUtf8(CacheLogPath),
+ /* max size */ 128 * 1024 * 1024,
+ /* max files */ 16,
+ /* rotate on open */ false);
+
+ auto CacheLogger = std::make_shared<spdlog::logger>("z$", CacheSink);
+ RegisterLogger(CacheLogger);
// Jupiter - only log upstream HTTP traffic to file
auto JupiterLogger = std::make_shared<spdlog::logger>("jupiter", FileSink);
- spdlog::register_logger(JupiterLogger);
+ RegisterLogger(JupiterLogger);
// Zen - only log upstream HTTP traffic to file
auto ZenClientLogger = std::make_shared<spdlog::logger>("zenclient", FileSink);
- spdlog::register_logger(ZenClientLogger);
+ RegisterLogger(ZenClientLogger);
// Configure all registered loggers according to settings
@@ -455,7 +472,15 @@ InitializeLogging(const ZenServerOptions& GlobalOptions)
{
FileSink->set_pattern("[%C-%m-%d.%e %T] [%n] [%l] %v");
}
- DefaultLogger.info("log starting at {}", zen::DateTime::Now().ToIso8601());
+
+ const std::string StartLogTime = zen::DateTime::Now().ToIso8601();
+ const zen::Oid ServerSessionId = zen::GetSessionId();
+
+ for (auto& Logger : KnownLoggers)
+ {
+ Logger->info("log starting at {}", StartLogTime);
+ Logger->info("server session id: {}", ServerSessionId);
+ }
}
void