From f0438612fb7eab933af45d38d146d78f66dc501f Mon Sep 17 00:00:00 2001 From: om7057 Date: Sat, 6 Jun 2026 13:18:30 +0530 Subject: [PATCH 1/3] config: implement missing minimum_severity and trace_based attributes for LoggerConfig --- .../logger_config_configuration.h | 4 + sdk/src/configuration/configuration_parser.cc | 6 + sdk/test/configuration/yaml_logs_test.cc | 104 ++++++++++++++++++ 3 files changed, 114 insertions(+) diff --git a/sdk/include/opentelemetry/sdk/configuration/logger_config_configuration.h b/sdk/include/opentelemetry/sdk/configuration/logger_config_configuration.h index f1e57c3b1f..a95068028f 100644 --- a/sdk/include/opentelemetry/sdk/configuration/logger_config_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/logger_config_configuration.h @@ -3,6 +3,7 @@ #pragma once +#include "opentelemetry/sdk/configuration/severity_number.h" #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -17,8 +18,11 @@ class LoggerConfigConfiguration { public: bool enabled{true}; + SeverityNumber minimum_severity{SeverityNumber::trace}; + bool trace_based{false}; }; } // namespace configuration } // namespace sdk OPENTELEMETRY_END_NAMESPACE + diff --git a/sdk/src/configuration/configuration_parser.cc b/sdk/src/configuration/configuration_parser.cc index 7b3a6b93fe..5510e69a75 100644 --- a/sdk/src/configuration/configuration_parser.cc +++ b/sdk/src/configuration/configuration_parser.cc @@ -624,6 +624,12 @@ LoggerConfigConfiguration ConfigurationParser::ParseLoggerConfigConfiguration( { LoggerConfigConfiguration model; model.enabled = node->GetBoolean("enabled", true); + + const std::string minimum_severity_str = node->GetString("minimum_severity", "trace"); + model.minimum_severity = ParseSeverityNumber(node, minimum_severity_str); + + model.trace_based = node->GetBoolean("trace_based", false); + return model; } diff --git a/sdk/test/configuration/yaml_logs_test.cc b/sdk/test/configuration/yaml_logs_test.cc index dc783685e2..3daa11ba7e 100644 --- a/sdk/test/configuration/yaml_logs_test.cc +++ b/sdk/test/configuration/yaml_logs_test.cc @@ -590,3 +590,107 @@ file_format: "1.0-logs" ASSERT_EQ(configurator->loggers[0].name, "noisy.library"); ASSERT_EQ(configurator->loggers[0].config.enabled, false); } + +TEST(YamlLogs, logger_config_with_minimum_severity) +{ + std::string yaml = R"YAML( +file_format: "1.0-logs" +logger_provider: + processors: + - simple: + exporter: + console: + logger_configurator/development: + default_config: + enabled: true + minimum_severity: warn + trace_based: false + loggers: + - name: my.logger + config: + enabled: true + minimum_severity: error + trace_based: true +)YAML"; + + auto config = DoParse(yaml); + ASSERT_NE(config, nullptr); + ASSERT_NE(config->logger_provider, nullptr); + ASSERT_NE(config->logger_provider->logger_configurator, nullptr); + + auto &configurator = config->logger_provider->logger_configurator; + ASSERT_EQ(configurator->default_config.enabled, true); + ASSERT_EQ(configurator->default_config.minimum_severity, + opentelemetry::sdk::configuration::SeverityNumber::warn); + ASSERT_EQ(configurator->default_config.trace_based, false); + ASSERT_EQ(configurator->loggers.size(), 1); + + ASSERT_EQ(configurator->loggers[0].name, "my.logger"); + ASSERT_EQ(configurator->loggers[0].config.enabled, true); + ASSERT_EQ(configurator->loggers[0].config.minimum_severity, + opentelemetry::sdk::configuration::SeverityNumber::error); + ASSERT_EQ(configurator->loggers[0].config.trace_based, true); +} + +TEST(YamlLogs, logger_config_with_default_minimum_severity) +{ + std::string yaml = R"YAML( +file_format: "1.0-logs" +logger_provider: + processors: + - simple: + exporter: + console: + logger_configurator/development: + default_config: + enabled: true + loggers: + - name: my.logger + config: + enabled: false +)YAML"; + + auto config = DoParse(yaml); + ASSERT_NE(config, nullptr); + ASSERT_NE(config->logger_provider, nullptr); + ASSERT_NE(config->logger_provider->logger_configurator, nullptr); + + auto &configurator = config->logger_provider->logger_configurator; + ASSERT_EQ(configurator->default_config.enabled, true); + ASSERT_EQ(configurator->default_config.minimum_severity, + opentelemetry::sdk::configuration::SeverityNumber::trace); + ASSERT_EQ(configurator->default_config.trace_based, false); + + ASSERT_EQ(configurator->loggers[0].config.enabled, false); + ASSERT_EQ(configurator->loggers[0].config.minimum_severity, + opentelemetry::sdk::configuration::SeverityNumber::trace); + ASSERT_EQ(configurator->loggers[0].config.trace_based, false); +} + +TEST(YamlLogs, logger_config_trace_based_true) +{ + std::string yaml = R"YAML( +file_format: "1.0-logs" +logger_provider: + processors: + - simple: + exporter: + console: + logger_configurator/development: + default_config: + enabled: true + minimum_severity: info + trace_based: true +)YAML"; + + auto config = DoParse(yaml); + ASSERT_NE(config, nullptr); + ASSERT_NE(config->logger_provider, nullptr); + ASSERT_NE(config->logger_provider->logger_configurator, nullptr); + + auto &configurator = config->logger_provider->logger_configurator; + ASSERT_EQ(configurator->default_config.enabled, true); + ASSERT_EQ(configurator->default_config.minimum_severity, + opentelemetry::sdk::configuration::SeverityNumber::info); + ASSERT_EQ(configurator->default_config.trace_based, true); +} From 0e0e2cdfba173d51d3236ddffaee1d3c68bd234b Mon Sep 17 00:00:00 2001 From: om7057 Date: Sat, 6 Jun 2026 19:08:13 +0530 Subject: [PATCH 2/3] config: update CHANGELOG for minimum_severity and trace_based LoggerConfig --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c257958b9b..d929483290 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,9 @@ Increment the: * [CODE HEALTH] Move func_grpc_main classes into anonymous namespace [#4129](https://github.com/open-telemetry/opentelemetry-cpp/pull/4129) +* [CONFIGURATION] Implement missing minimum_severity and trace_based for LoggerConfig declarative configuration + [#4131](https://github.com/open-telemetry/opentelemetry-cpp/pull/4131) + ## [1.27.0] 2026-05-13 * [RELEASE] Bump main branch to 1.27.0-dev From 887a3dae255bc9ac9c1d1681998c45e9601e90b0 Mon Sep 17 00:00:00 2001 From: om7057 Date: Sat, 6 Jun 2026 23:54:02 +0530 Subject: [PATCH 3/3] config: fix formatting and IWYU issues in LoggerConfig implementation --- CHANGELOG.md | 3 ++- .../sdk/configuration/logger_config_configuration.h | 1 - sdk/src/configuration/configuration_parser.cc | 8 ++++---- sdk/test/configuration/yaml_logs_test.cc | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d929483290..1607ae7d0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,7 +54,8 @@ Increment the: * [CODE HEALTH] Move func_grpc_main classes into anonymous namespace [#4129](https://github.com/open-telemetry/opentelemetry-cpp/pull/4129) -* [CONFIGURATION] Implement missing minimum_severity and trace_based for LoggerConfig declarative configuration +* [CONFIGURATION] Implement missing minimum_severity and trace_based for + LoggerConfig declarative configuration [#4131](https://github.com/open-telemetry/opentelemetry-cpp/pull/4131) ## [1.27.0] 2026-05-13 diff --git a/sdk/include/opentelemetry/sdk/configuration/logger_config_configuration.h b/sdk/include/opentelemetry/sdk/configuration/logger_config_configuration.h index a95068028f..736699754f 100644 --- a/sdk/include/opentelemetry/sdk/configuration/logger_config_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/logger_config_configuration.h @@ -25,4 +25,3 @@ class LoggerConfigConfiguration } // namespace configuration } // namespace sdk OPENTELEMETRY_END_NAMESPACE - diff --git a/sdk/src/configuration/configuration_parser.cc b/sdk/src/configuration/configuration_parser.cc index 5510e69a75..116bf28d4e 100644 --- a/sdk/src/configuration/configuration_parser.cc +++ b/sdk/src/configuration/configuration_parser.cc @@ -624,12 +624,12 @@ LoggerConfigConfiguration ConfigurationParser::ParseLoggerConfigConfiguration( { LoggerConfigConfiguration model; model.enabled = node->GetBoolean("enabled", true); - + const std::string minimum_severity_str = node->GetString("minimum_severity", "trace"); - model.minimum_severity = ParseSeverityNumber(node, minimum_severity_str); - + model.minimum_severity = ParseSeverityNumber(node, minimum_severity_str); + model.trace_based = node->GetBoolean("trace_based", false); - + return model; } diff --git a/sdk/test/configuration/yaml_logs_test.cc b/sdk/test/configuration/yaml_logs_test.cc index 3daa11ba7e..f885f85434 100644 --- a/sdk/test/configuration/yaml_logs_test.cc +++ b/sdk/test/configuration/yaml_logs_test.cc @@ -21,6 +21,7 @@ #include "opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h" #include "opentelemetry/sdk/configuration/otlp_http_encoding.h" #include "opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/severity_number.h" #include "opentelemetry/sdk/configuration/simple_log_record_processor_configuration.h" #include "opentelemetry/sdk/configuration/yaml_configuration_parser.h"