diff options
| author | Stefan Boberg <[email protected]> | 2026-02-13 13:47:51 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-02-13 13:47:51 +0100 |
| commit | b0a3de5fec8f4da8f9513b02bc2326aa6a0e7bd5 (patch) | |
| tree | a365bcd2bd339fc275d19bdc78ea3af0d2437386 /src/zenutil | |
| parent | add IHttpRequestFilter to allow server implementation to filter/reject reques... (diff) | |
| download | zen-b0a3de5fec8f4da8f9513b02bc2326aa6a0e7bd5.tar.xz zen-b0a3de5fec8f4da8f9513b02bc2326aa6a0e7bd5.zip | |
logging config move to zenutil (#754)
made logging config options from zenserver available in zen CLI
Diffstat (limited to 'src/zenutil')
| -rw-r--r-- | src/zenutil/config/commandlineoptions.cpp (renamed from src/zenutil/commandlineoptions.cpp) | 2 | ||||
| -rw-r--r-- | src/zenutil/config/environmentoptions.cpp (renamed from src/zenutil/environmentoptions.cpp) | 2 | ||||
| -rw-r--r-- | src/zenutil/config/loggingconfig.cpp | 77 | ||||
| -rw-r--r-- | src/zenutil/include/zenutil/config/commandlineoptions.h (renamed from src/zenutil/include/zenutil/commandlineoptions.h) | 0 | ||||
| -rw-r--r-- | src/zenutil/include/zenutil/config/environmentoptions.h (renamed from src/zenutil/include/zenutil/environmentoptions.h) | 2 | ||||
| -rw-r--r-- | src/zenutil/include/zenutil/config/loggingconfig.h | 37 | ||||
| -rw-r--r-- | src/zenutil/zenutil.cpp | 2 |
7 files changed, 118 insertions, 4 deletions
diff --git a/src/zenutil/commandlineoptions.cpp b/src/zenutil/config/commandlineoptions.cpp index d94564843..84c718ecc 100644 --- a/src/zenutil/commandlineoptions.cpp +++ b/src/zenutil/config/commandlineoptions.cpp @@ -1,6 +1,6 @@ // Copyright Epic Games, Inc. All Rights Reserved. -#include <zenutil/commandlineoptions.h> +#include <zenutil/config/commandlineoptions.h> #include <zencore/string.h> #include <filesystem> diff --git a/src/zenutil/environmentoptions.cpp b/src/zenutil/config/environmentoptions.cpp index ee40086c1..fb7f71706 100644 --- a/src/zenutil/environmentoptions.cpp +++ b/src/zenutil/config/environmentoptions.cpp @@ -1,6 +1,6 @@ // Copyright Epic Games, Inc. All Rights Reserved. -#include <zenutil/environmentoptions.h> +#include <zenutil/config/environmentoptions.h> #include <zencore/filesystem.h> diff --git a/src/zenutil/config/loggingconfig.cpp b/src/zenutil/config/loggingconfig.cpp new file mode 100644 index 000000000..9ec816b1b --- /dev/null +++ b/src/zenutil/config/loggingconfig.cpp @@ -0,0 +1,77 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "zenutil/config/loggingconfig.h" + +#include <zenbase/zenbase.h> +#include <zencore/filesystem.h> +#include <zencore/logging.h> + +ZEN_THIRD_PARTY_INCLUDES_START +#include <cxxopts.hpp> +ZEN_THIRD_PARTY_INCLUDES_END + +namespace zen { + +void +ZenLoggingCmdLineOptions::AddCliOptions(cxxopts::Options& options, ZenLoggingConfig& LoggingConfig) +{ + // clang-format off + options.add_options("logging") + ("abslog", "Path to log file", cxxopts::value<std::string>(m_AbsLogFile)) + ("log-id", "Specify id for adding context to log output", cxxopts::value<std::string>(LoggingConfig.LogId)) + ("quiet", "Configure console logger output to level WARN", cxxopts::value<bool>(LoggingConfig.QuietConsole)->default_value("false")) + ("noconsole", "Disable console logging", cxxopts::value<bool>(LoggingConfig.NoConsoleOutput)->default_value("false")) + ("log-trace", "Change selected loggers to level TRACE", cxxopts::value<std::string>(LoggingConfig.Loggers[logging::level::Trace])) + ("log-debug", "Change selected loggers to level DEBUG", cxxopts::value<std::string>(LoggingConfig.Loggers[logging::level::Debug])) + ("log-info", "Change selected loggers to level INFO", cxxopts::value<std::string>(LoggingConfig.Loggers[logging::level::Info])) + ("log-warn", "Change selected loggers to level WARN", cxxopts::value<std::string>(LoggingConfig.Loggers[logging::level::Warn])) + ("log-error", "Change selected loggers to level ERROR", cxxopts::value<std::string>(LoggingConfig.Loggers[logging::level::Err])) + ("log-critical", "Change selected loggers to level CRITICAL", cxxopts::value<std::string>(LoggingConfig.Loggers[logging::level::Critical])) + ("log-off", "Change selected loggers to level OFF", cxxopts::value<std::string>(LoggingConfig.Loggers[logging::level::Off])) + ("otlp-endpoint", "OpenTelemetry endpoint URI (e.g http://localhost:4318)", cxxopts::value<std::string>(LoggingConfig.OtelEndpointUri)) + ; + // clang-format on +} + +void +ZenLoggingCmdLineOptions::ApplyOptions(ZenLoggingConfig& LoggingConfig) +{ + LoggingConfig.AbsLogFile = MakeSafeAbsolutePath(m_AbsLogFile); +} + +void +ApplyLoggingOptions(cxxopts::Options& options, ZenLoggingConfig& LoggingConfig) +{ + ZEN_UNUSED(options); + + if (LoggingConfig.QuietConsole) + { + bool HasExplicitConsoleLevel = false; + for (int i = 0; i < logging::level::LogLevelCount; ++i) + { + if (LoggingConfig.Loggers[i].find("console") != std::string::npos) + { + HasExplicitConsoleLevel = true; + break; + } + } + + if (!HasExplicitConsoleLevel) + { + std::string& WarnLoggers = LoggingConfig.Loggers[logging::level::Warn]; + if (!WarnLoggers.empty()) + { + WarnLoggers += ","; + } + WarnLoggers += "console"; + } + } + + for (int i = 0; i < logging::level::LogLevelCount; ++i) + { + logging::ConfigureLogLevels(logging::level::LogLevel(i), LoggingConfig.Loggers[i]); + } + logging::RefreshLogLevels(); +} + +} // namespace zen diff --git a/src/zenutil/include/zenutil/commandlineoptions.h b/src/zenutil/include/zenutil/config/commandlineoptions.h index 01cceedb1..01cceedb1 100644 --- a/src/zenutil/include/zenutil/commandlineoptions.h +++ b/src/zenutil/include/zenutil/config/commandlineoptions.h diff --git a/src/zenutil/include/zenutil/environmentoptions.h b/src/zenutil/include/zenutil/config/environmentoptions.h index 7418608e4..1ecdf591a 100644 --- a/src/zenutil/include/zenutil/environmentoptions.h +++ b/src/zenutil/include/zenutil/config/environmentoptions.h @@ -3,7 +3,7 @@ #pragma once #include <zencore/string.h> -#include <zenutil/commandlineoptions.h> +#include <zenutil/config/commandlineoptions.h> namespace zen { diff --git a/src/zenutil/include/zenutil/config/loggingconfig.h b/src/zenutil/include/zenutil/config/loggingconfig.h new file mode 100644 index 000000000..6d6f64b30 --- /dev/null +++ b/src/zenutil/include/zenutil/config/loggingconfig.h @@ -0,0 +1,37 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include <zencore/logbase.h> +#include <filesystem> +#include <string> + +namespace cxxopts { +class Options; +} + +namespace zen { + +struct ZenLoggingConfig +{ + bool NoConsoleOutput = false; // Control default use of stdout for diagnostics + bool QuietConsole = false; // Configure console logger output to level WARN + std::filesystem::path AbsLogFile; // Absolute path to main log file + std::string Loggers[logging::level::LogLevelCount]; + std::string LogId; // Id for tagging log output + std::string OtelEndpointUri; // OpenTelemetry endpoint URI +}; + +void ApplyLoggingOptions(cxxopts::Options& options, ZenLoggingConfig& LoggingConfig); + +class ZenLoggingCmdLineOptions +{ +public: + void AddCliOptions(cxxopts::Options& options, ZenLoggingConfig& LoggingConfig); + void ApplyOptions(ZenLoggingConfig& LoggingConfig); + +private: + std::string m_AbsLogFile; +}; + +} // namespace zen diff --git a/src/zenutil/zenutil.cpp b/src/zenutil/zenutil.cpp index 51c1ee72e..291dbeadd 100644 --- a/src/zenutil/zenutil.cpp +++ b/src/zenutil/zenutil.cpp @@ -5,7 +5,7 @@ #if ZEN_WITH_TESTS # include <zenutil/rpcrecording.h> -# include <zenutil/commandlineoptions.h> +# include <zenutil/config/commandlineoptions.h> # include <zenutil/wildcard.h> namespace zen { |