Skip to content

Commit af27cc9

Browse files
authored
[CONFIGURATION] Implementing minimum_severity and trace_based attributes for LoggerConfig (#4131)
1 parent e649c7f commit af27cc9

4 files changed

Lines changed: 118 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ Increment the:
5454
* [CODE HEALTH] Move func_grpc_main classes into anonymous namespace
5555
[#4129](https://github.com/open-telemetry/opentelemetry-cpp/pull/4129)
5656

57+
* [CONFIGURATION] Implement missing minimum_severity and trace_based for
58+
LoggerConfig declarative configuration
59+
[#4131](https://github.com/open-telemetry/opentelemetry-cpp/pull/4131)
60+
5761
## [1.27.0] 2026-05-13
5862

5963
* [RELEASE] Bump main branch to 1.27.0-dev

sdk/include/opentelemetry/sdk/configuration/logger_config_configuration.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#pragma once
55

6+
#include "opentelemetry/sdk/configuration/severity_number.h"
67
#include "opentelemetry/version.h"
78

89
OPENTELEMETRY_BEGIN_NAMESPACE
@@ -17,6 +18,8 @@ class LoggerConfigConfiguration
1718
{
1819
public:
1920
bool enabled{true};
21+
SeverityNumber minimum_severity{SeverityNumber::trace};
22+
bool trace_based{false};
2023
};
2124

2225
} // namespace configuration

sdk/src/configuration/configuration_parser.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,12 @@ LoggerConfigConfiguration ConfigurationParser::ParseLoggerConfigConfiguration(
624624
{
625625
LoggerConfigConfiguration model;
626626
model.enabled = node->GetBoolean("enabled", true);
627+
628+
const std::string minimum_severity_str = node->GetString("minimum_severity", "trace");
629+
model.minimum_severity = ParseSeverityNumber(node, minimum_severity_str);
630+
631+
model.trace_based = node->GetBoolean("trace_based", false);
632+
627633
return model;
628634
}
629635

sdk/test/configuration/yaml_logs_test.cc

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h"
2222
#include "opentelemetry/sdk/configuration/otlp_http_encoding.h"
2323
#include "opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h"
24+
#include "opentelemetry/sdk/configuration/severity_number.h"
2425
#include "opentelemetry/sdk/configuration/simple_log_record_processor_configuration.h"
2526
#include "opentelemetry/sdk/configuration/yaml_configuration_parser.h"
2627

@@ -590,3 +591,107 @@ file_format: "1.0-logs"
590591
ASSERT_EQ(configurator->loggers[0].name, "noisy.library");
591592
ASSERT_EQ(configurator->loggers[0].config.enabled, false);
592593
}
594+
595+
TEST(YamlLogs, logger_config_with_minimum_severity)
596+
{
597+
std::string yaml = R"YAML(
598+
file_format: "1.0-logs"
599+
logger_provider:
600+
processors:
601+
- simple:
602+
exporter:
603+
console:
604+
logger_configurator/development:
605+
default_config:
606+
enabled: true
607+
minimum_severity: warn
608+
trace_based: false
609+
loggers:
610+
- name: my.logger
611+
config:
612+
enabled: true
613+
minimum_severity: error
614+
trace_based: true
615+
)YAML";
616+
617+
auto config = DoParse(yaml);
618+
ASSERT_NE(config, nullptr);
619+
ASSERT_NE(config->logger_provider, nullptr);
620+
ASSERT_NE(config->logger_provider->logger_configurator, nullptr);
621+
622+
auto &configurator = config->logger_provider->logger_configurator;
623+
ASSERT_EQ(configurator->default_config.enabled, true);
624+
ASSERT_EQ(configurator->default_config.minimum_severity,
625+
opentelemetry::sdk::configuration::SeverityNumber::warn);
626+
ASSERT_EQ(configurator->default_config.trace_based, false);
627+
ASSERT_EQ(configurator->loggers.size(), 1);
628+
629+
ASSERT_EQ(configurator->loggers[0].name, "my.logger");
630+
ASSERT_EQ(configurator->loggers[0].config.enabled, true);
631+
ASSERT_EQ(configurator->loggers[0].config.minimum_severity,
632+
opentelemetry::sdk::configuration::SeverityNumber::error);
633+
ASSERT_EQ(configurator->loggers[0].config.trace_based, true);
634+
}
635+
636+
TEST(YamlLogs, logger_config_with_default_minimum_severity)
637+
{
638+
std::string yaml = R"YAML(
639+
file_format: "1.0-logs"
640+
logger_provider:
641+
processors:
642+
- simple:
643+
exporter:
644+
console:
645+
logger_configurator/development:
646+
default_config:
647+
enabled: true
648+
loggers:
649+
- name: my.logger
650+
config:
651+
enabled: false
652+
)YAML";
653+
654+
auto config = DoParse(yaml);
655+
ASSERT_NE(config, nullptr);
656+
ASSERT_NE(config->logger_provider, nullptr);
657+
ASSERT_NE(config->logger_provider->logger_configurator, nullptr);
658+
659+
auto &configurator = config->logger_provider->logger_configurator;
660+
ASSERT_EQ(configurator->default_config.enabled, true);
661+
ASSERT_EQ(configurator->default_config.minimum_severity,
662+
opentelemetry::sdk::configuration::SeverityNumber::trace);
663+
ASSERT_EQ(configurator->default_config.trace_based, false);
664+
665+
ASSERT_EQ(configurator->loggers[0].config.enabled, false);
666+
ASSERT_EQ(configurator->loggers[0].config.minimum_severity,
667+
opentelemetry::sdk::configuration::SeverityNumber::trace);
668+
ASSERT_EQ(configurator->loggers[0].config.trace_based, false);
669+
}
670+
671+
TEST(YamlLogs, logger_config_trace_based_true)
672+
{
673+
std::string yaml = R"YAML(
674+
file_format: "1.0-logs"
675+
logger_provider:
676+
processors:
677+
- simple:
678+
exporter:
679+
console:
680+
logger_configurator/development:
681+
default_config:
682+
enabled: true
683+
minimum_severity: info
684+
trace_based: true
685+
)YAML";
686+
687+
auto config = DoParse(yaml);
688+
ASSERT_NE(config, nullptr);
689+
ASSERT_NE(config->logger_provider, nullptr);
690+
ASSERT_NE(config->logger_provider->logger_configurator, nullptr);
691+
692+
auto &configurator = config->logger_provider->logger_configurator;
693+
ASSERT_EQ(configurator->default_config.enabled, true);
694+
ASSERT_EQ(configurator->default_config.minimum_severity,
695+
opentelemetry::sdk::configuration::SeverityNumber::info);
696+
ASSERT_EQ(configurator->default_config.trace_based, true);
697+
}

0 commit comments

Comments
 (0)