From fd3946f2b2b013af01fdf60f67afb655c38c1901 Mon Sep 17 00:00:00 2001 From: Per Larsson Date: Tue, 31 Aug 2021 15:01:46 +0200 Subject: Asynchronous upstream caching to Jupiter Co-authored-by: Stefan Boberg --- zenserver/diag/logging.cpp | 64 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 9 deletions(-) (limited to 'zenserver/diag/logging.cpp') 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 #include #include #include #include #include +#include #include +#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(zen::WideToUtf8(LogPath.c_str()), /* truncate */ true); - file_sink->set_level(spdlog::level::trace); + // Sinks + auto ConsoleSink = std::make_shared(); + auto FileSink = std::make_shared(zen::WideToUtf8(LogPath.c_str()), /* truncate */ true); - auto& sinks = spdlog::default_logger()->sinks(); - sinks.clear(); - sinks.push_back(std::make_shared()); - 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("jupiter", FileSink); + spdlog::register_logger(JupiterLogger); + JupiterLogger->set_level(LogLevel); + + spdlog::set_level(LogLevel); spdlog::set_formatter(std::make_unique(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 Logger = spdlog::get(std::string(Name)); + if (!Logger) + { + Logger = std::make_shared(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 -- cgit v1.2.3