diff options
| author | Stefan Boberg <[email protected]> | 2023-10-04 19:06:35 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-10-04 19:06:35 +0200 |
| commit | 89467bb2a858ae60dbcc8069d67c848a56231c9c (patch) | |
| tree | dbe6213a98a7afd6cf12935daac003fa9b9da278 /src | |
| parent | formatting of server config (diff) | |
| download | zen-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.h | 1 | ||||
| -rw-r--r-- | src/zencore/logging.cpp | 14 | ||||
| -rw-r--r-- | src/zenserver/config.cpp | 2 | ||||
| -rw-r--r-- | src/zenserver/config.h | 1 | ||||
| -rw-r--r-- | src/zenserver/diag/logging.cpp | 14 |
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 |