aboutsummaryrefslogtreecommitdiff
path: root/zenserver/diag/logging.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-08-31 15:01:46 +0200
committerPer Larsson <[email protected]>2021-08-31 15:16:22 +0200
commitfd3946f2b2b013af01fdf60f67afb655c38c1901 (patch)
treeeca4abed5d71a157e185699f4e9668a92b756ca8 /zenserver/diag/logging.cpp
parentRemoved unused packages from vcpkg.json (diff)
downloadzen-fd3946f2b2b013af01fdf60f67afb655c38c1901.tar.xz
zen-fd3946f2b2b013af01fdf60f67afb655c38c1901.zip
Asynchronous upstream caching to Jupiter
Co-authored-by: Stefan Boberg <[email protected]>
Diffstat (limited to 'zenserver/diag/logging.cpp')
-rw-r--r--zenserver/diag/logging.cpp64
1 files changed, 55 insertions, 9 deletions
diff --git a/zenserver/diag/logging.cpp b/zenserver/diag/logging.cpp
index 2583784c3..23933f12e 100644
--- a/zenserver/diag/logging.cpp
+++ b/zenserver/diag/logging.cpp
@@ -4,13 +4,14 @@
#include "config.h"
-#include <zencore/string.h>
#include <spdlog/pattern_formatter.h>
#include <spdlog/sinks/ansicolor_sink.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/spdlog.h>
+#include <zencore/string.h>
#include <memory>
+#include "spdlog/sinks/basic_file_sink.h"
// Custom logging -- test code, this should be tweaked
@@ -188,20 +189,38 @@ InitializeLogging(const ZenServerOptions& GlobalOptions)
{
EnableVTMode();
- std::filesystem::path LogPath = GlobalOptions.DataDir / "logs/zenserver.txt";
+ std::filesystem::path LogPath = GlobalOptions.DataDir / "logs/zenserver.log";
+
+ spdlog::level::level_enum LogLevel = spdlog::level::debug;
- auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(zen::WideToUtf8(LogPath.c_str()), /* truncate */ true);
- file_sink->set_level(spdlog::level::trace);
+ // Sinks
+ auto ConsoleSink = std::make_shared<spdlog::sinks::ansicolor_stdout_sink_mt>();
+ auto FileSink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(zen::WideToUtf8(LogPath.c_str()), /* truncate */ true);
- auto& sinks = spdlog::default_logger()->sinks();
- sinks.clear();
- sinks.push_back(std::make_shared<spdlog::sinks::ansicolor_stdout_sink_mt>());
- sinks.push_back(file_sink);
+ // Default
+ auto DefaultLogger = spdlog::default_logger();
+ auto& Sinks = spdlog::default_logger()->sinks();
+ Sinks.clear();
+ Sinks.push_back(ConsoleSink);
+ Sinks.push_back(FileSink);
+ DefaultLogger->set_level(LogLevel);
- spdlog::set_level(spdlog::level::debug);
+ // Jupiter - only log HTTP traffic to file
+ auto JupiterLogger = std::make_shared<spdlog::logger>("jupiter", FileSink);
+ spdlog::register_logger(JupiterLogger);
+ JupiterLogger->set_level(LogLevel);
+
+ spdlog::set_level(LogLevel);
spdlog::set_formatter(std::make_unique<logging::full_formatter>(GlobalOptions.LogId, std::chrono::system_clock::now()));
}
+void
+ShutdownLogging()
+{
+ spdlog::drop_all();
+ spdlog::shutdown();
+}
+
spdlog::logger&
ConsoleLog()
{
@@ -211,3 +230,30 @@ ConsoleLog()
return *ConLogger;
}
+
+namespace zen::logging {
+
+spdlog::logger&
+Default()
+{
+ return *spdlog::default_logger();
+}
+
+spdlog::logger&
+Get(std::string_view Name)
+{
+ std::shared_ptr<spdlog::logger> Logger = spdlog::get(std::string(Name));
+ if (!Logger)
+ {
+ Logger = std::make_shared<spdlog::logger>(std::string(Name),
+ begin(spdlog::default_logger()->sinks()),
+ end(spdlog::default_logger()->sinks()));
+
+ Logger->set_level(spdlog::default_logger()->level());
+ spdlog::register_logger(Logger);
+ }
+
+ return *Logger;
+}
+
+} // namespace zen::logging