aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-10-04 19:06:35 +0200
committerGitHub <[email protected]>2023-10-04 19:06:35 +0200
commit89467bb2a858ae60dbcc8069d67c848a56231c9c (patch)
treedbe6213a98a7afd6cf12935daac003fa9b9da278 /src
parentformatting of server config (diff)
downloadzen-89467bb2a858ae60dbcc8069d67c848a56231c9c.tar.xz
zen-89467bb2a858ae60dbcc8069d67c848a56231c9c.zip
added --quiet option to suppress default logging to stdout (#446)
added --quiet option for zenserver to suppress default logging to stdout
Diffstat (limited to 'src')
-rw-r--r--src/zencore/include/zencore/logging.h1
-rw-r--r--src/zencore/logging.cpp14
-rw-r--r--src/zenserver/config.cpp2
-rw-r--r--src/zenserver/config.h1
-rw-r--r--src/zenserver/diag/logging.cpp14
5 files changed, 27 insertions, 5 deletions
diff --git a/src/zencore/include/zencore/logging.h b/src/zencore/include/zencore/logging.h
index 462f2b4e0..c0d966475 100644
--- a/src/zencore/include/zencore/logging.h
+++ b/src/zencore/include/zencore/logging.h
@@ -16,6 +16,7 @@ namespace zen::logging {
spdlog::logger& Default();
void SetDefault(std::shared_ptr<spdlog::logger> NewDefaultLogger);
spdlog::logger& ConsoleLog();
+void SuppressConsoleLog();
spdlog::logger& Get(std::string_view Name);
spdlog::logger* ErrorLog();
void SetErrorLog(std::shared_ptr<spdlog::logger>&& NewErrorLogger);
diff --git a/src/zencore/logging.cpp b/src/zencore/logging.cpp
index dc923f45e..ff37af368 100644
--- a/src/zencore/logging.cpp
+++ b/src/zencore/logging.cpp
@@ -5,6 +5,7 @@
#include <zencore/string.h>
#include <zencore/testing.h>
+#include <spdlog/sinks/null_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
namespace zen {
@@ -46,13 +47,22 @@ Get(std::string_view Name)
std::once_flag ConsoleInitFlag;
std::shared_ptr<spdlog::logger> ConLogger;
+void
+SuppressConsoleLog()
+{
+ ConLogger = spdlog::null_logger_mt("console");
+}
+
spdlog::logger&
ConsoleLog()
{
std::call_once(ConsoleInitFlag, [&] {
- ConLogger = spdlog::stdout_color_mt("console");
+ if (!ConLogger)
+ {
+ ConLogger = spdlog::stdout_color_mt("console");
- ConLogger->set_pattern("%v");
+ ConLogger->set_pattern("%v");
+ }
});
return *ConLogger;
diff --git a/src/zenserver/config.cpp b/src/zenserver/config.cpp
index c0a97ce5b..b7699900f 100644
--- a/src/zenserver/config.cpp
+++ b/src/zenserver/config.cpp
@@ -787,6 +787,7 @@ ParseConfigFile(const std::filesystem::path& Path,
LuaOptions.AddOption("server.contentdir"sv, ServerOptions.ContentDir, "content-dir"sv);
LuaOptions.AddOption("server.abslog"sv, ServerOptions.AbsLogFile, "abslog"sv);
LuaOptions.AddOption("server.debug"sv, ServerOptions.IsDebug, "debug"sv);
+ LuaOptions.AddOption("server.noconsole"sv, ServerOptions.NoConsoleOutput, "quiet"sv);
////// objectstore
LuaOptions.AddOption("server.objectstore.enabled"sv, ServerOptions.ObjectStoreEnabled, "objectstore-enabled"sv);
@@ -1000,6 +1001,7 @@ ParseCliOptions(int argc, char* argv[], ZenServerOptions& ServerOptions)
options.add_options()("sentry-allow-personal-info",
"Allow personally identifiable information in sentry crash reports",
cxxopts::value<bool>(ServerOptions.SentryAllowPII)->default_value("false"));
+ options.add_options()("quiet", "Disable console logging", cxxopts::value<bool>(ServerOptions.NoConsoleOutput)->default_value("false"));
options.add_option("security",
"",
diff --git a/src/zenserver/config.h b/src/zenserver/config.h
index df1ccb752..8e2ffe74c 100644
--- a/src/zenserver/config.h
+++ b/src/zenserver/config.h
@@ -156,6 +156,7 @@ struct ZenServerOptions
bool NoSentry = false;
bool SentryAllowPII = false; // Allow personally identifiable information in sentry crash reports
bool ObjectStoreEnabled = false;
+ bool NoConsoleOutput = false; // Control default use of stdout for diagnostics
#if ZEN_WITH_TRACE
std::string TraceHost; // Host name or IP address to send trace data to
std::string TraceFile; // Path of a file to write a trace
diff --git a/src/zenserver/diag/logging.cpp b/src/zenserver/diag/logging.cpp
index 0f15253cc..29c8eec4c 100644
--- a/src/zenserver/diag/logging.cpp
+++ b/src/zenserver/diag/logging.cpp
@@ -352,8 +352,6 @@ InitializeLogging(const ZenServerOptions& GlobalOptions)
// Sinks
- auto ConsoleSink = std::make_shared<spdlog::sinks::ansicolor_stdout_sink_mt>();
-
// spdlog can't create directories that starts with `\\?\` so we make sure the folder exists before creating the logger instance
zen::CreateDirectories(GlobalOptions.AbsLogFile.parent_path());
@@ -378,7 +376,17 @@ InitializeLogging(const ZenServerOptions& GlobalOptions)
auto& Sinks = DefaultLogger.sinks();
Sinks.clear();
- Sinks.push_back(ConsoleSink);
+
+ if (GlobalOptions.NoConsoleOutput)
+ {
+ zen::logging::SuppressConsoleLog();
+ }
+ else
+ {
+ auto ConsoleSink = std::make_shared<spdlog::sinks::ansicolor_stdout_sink_mt>();
+ Sinks.push_back(ConsoleSink);
+ }
+
Sinks.push_back(FileSink);
#if ZEN_PLATFORM_WINDOWS