diff options
| author | Stefan Boberg <[email protected]> | 2021-09-08 16:14:40 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-08 16:14:40 +0200 |
| commit | cd9579c48d691c14d8aa4e7119714ee11c58437a (patch) | |
| tree | e28fe11efa40540fb83abf1296c96174a62c5d58 | |
| parent | Merge branch 'main' of https://github.com/EpicGames/zen (diff) | |
| download | zen-cd9579c48d691c14d8aa4e7119714ee11c58437a.tar.xz zen-cd9579c48d691c14d8aa4e7119714ee11c58437a.zip | |
Changed logging defaults to be more suitable for production
* Default log level changes from debug to info
* Default logging mode changes from sync to async
| -rw-r--r-- | zenserver/diag/logging.cpp | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/zenserver/diag/logging.cpp b/zenserver/diag/logging.cpp index 89ed4ac6a..a5a4edfc0 100644 --- a/zenserver/diag/logging.cpp +++ b/zenserver/diag/logging.cpp @@ -4,6 +4,8 @@ #include "config.h" +#include <spdlog/async.h> +#include <spdlog/async_logger.h> #include <spdlog/pattern_formatter.h> #include <spdlog/sinks/ansicolor_sink.h> #include <spdlog/sinks/basic_file_sink.h> @@ -191,9 +193,27 @@ InitializeLogging(const ZenServerOptions& GlobalOptions) std::filesystem::path LogPath = GlobalOptions.DataDir / "logs/zenserver.log"; - spdlog::level::level_enum LogLevel = spdlog::level::debug; + bool IsAsync = true; + spdlog::level::level_enum LogLevel = spdlog::level::info; + + if (GlobalOptions.IsDebug) + { + LogLevel = spdlog::level::debug; + IsAsync = false; + } + + if (IsAsync) + { + const int QueueSize = 8192; + const int ThreadCount = 1; + spdlog::init_thread_pool(QueueSize, ThreadCount); + + auto AsyncLogger = spdlog::create_async<spdlog::sinks::ansicolor_stdout_sink_mt>("main"); + spdlog::set_default_logger(AsyncLogger); + } // 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); @@ -201,9 +221,11 @@ InitializeLogging(const ZenServerOptions& GlobalOptions) 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); + DefaultLogger->flush_on(spdlog::level::err); // Jupiter - only log HTTP traffic to file auto JupiterLogger = std::make_shared<spdlog::logger>("jupiter", FileSink); @@ -225,12 +247,17 @@ ShutdownLogging() spdlog::shutdown(); } +std::once_flag ConsoleInitFlag; +std::shared_ptr<spdlog::logger> ConLogger; + spdlog::logger& ConsoleLog() { - static auto ConLogger = spdlog::stdout_color_mt("console"); + std::call_once(ConsoleInitFlag, [&] { + ConLogger = spdlog::stdout_color_mt("console"); - ConLogger->set_pattern("%v"); + ConLogger->set_pattern("%v"); + }); return *ConLogger; } |