aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-08 16:14:40 +0200
committerStefan Boberg <[email protected]>2021-09-08 16:14:40 +0200
commitcd9579c48d691c14d8aa4e7119714ee11c58437a (patch)
treee28fe11efa40540fb83abf1296c96174a62c5d58
parentMerge branch 'main' of https://github.com/EpicGames/zen (diff)
downloadzen-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.cpp33
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;
}