diff options
| author | Per Larsson <[email protected]> | 2021-08-31 15:01:46 +0200 |
|---|---|---|
| committer | Per Larsson <[email protected]> | 2021-08-31 15:16:22 +0200 |
| commit | fd3946f2b2b013af01fdf60f67afb655c38c1901 (patch) | |
| tree | eca4abed5d71a157e185699f4e9668a92b756ca8 /zenserver/diag/logging.cpp | |
| parent | Removed unused packages from vcpkg.json (diff) | |
| download | zen-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.cpp | 64 |
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 |