Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ Increment the:
* [API] Parse baggage value as spec compliant
[#3758](https://github.com/open-telemetry/opentelemetry-cpp/pull/3758)

* [CONFIGURATION] File configuration - implement log_level
[#3810](https://github.com/open-telemetry/opentelemetry-cpp/pull/3810)

Breaking changes:

* [CONFIGURATION] File configuration - remove zipkin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "opentelemetry/sdk/configuration/meter_provider_configuration.h"
#include "opentelemetry/sdk/configuration/propagator_configuration.h"
#include "opentelemetry/sdk/configuration/resource_configuration.h"
#include "opentelemetry/sdk/configuration/severity_number.h"
#include "opentelemetry/sdk/configuration/tracer_provider_configuration.h"
#include "opentelemetry/version.h"

Expand Down Expand Up @@ -65,7 +66,7 @@ class Configuration

std::string file_format;
bool disabled{false};
std::string log_level;
enum SeverityNumber log_level = SeverityNumber::info;

std::unique_ptr<AttributeLimitsConfiguration> attribute_limits;
std::unique_ptr<LoggerProviderConfiguration> logger_provider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
#include "opentelemetry/sdk/configuration/boolean_array_attribute_value_configuration.h"
#include "opentelemetry/sdk/configuration/boolean_attribute_value_configuration.h"
#include "opentelemetry/sdk/configuration/configuration.h"
#include "opentelemetry/sdk/configuration/configuration_parser.h"
#include "opentelemetry/sdk/configuration/console_log_record_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/console_span_exporter_configuration.h"
Expand Down Expand Up @@ -72,6 +71,7 @@
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/resource_configuration.h"
#include "opentelemetry/sdk/configuration/sampler_configuration.h"
#include "opentelemetry/sdk/configuration/severity_number.h"
#include "opentelemetry/sdk/configuration/simple_log_record_processor_configuration.h"
#include "opentelemetry/sdk/configuration/simple_span_processor_configuration.h"
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
Expand Down Expand Up @@ -102,6 +102,9 @@ class ConfigurationParser
OtlpHttpEncoding ParseOtlpHttpEncoding(const std::unique_ptr<DocumentNode> &node,
const std::string &name) const;

SeverityNumber ParseSeverityNumber(const std::unique_ptr<DocumentNode> &node,
const std::string &name) const;

std::unique_ptr<StringArrayConfiguration> ParseStringArrayConfiguration(
const std::unique_ptr<DocumentNode> &node) const;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class ConfiguredSdk
*/
void UnInstall();

opentelemetry::sdk::common::internal_log::LogLevel log_level;
opentelemetry::sdk::resource::Resource resource;
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> tracer_provider;
std::shared_ptr<opentelemetry::context::propagation::TextMapPropagator> propagator;
Expand Down
3 changes: 3 additions & 0 deletions sdk/include/opentelemetry/sdk/configuration/sdk_builder.h
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,9 @@ class SdkBuilder
const std::unique_ptr<opentelemetry::sdk::configuration::ResourceConfiguration>
&opt_model) const;

void SetLogLevel(opentelemetry::sdk::common::internal_log::LogLevel &sdk_log_level,
opentelemetry::sdk::configuration::SeverityNumber model_log_level) const;

std::unique_ptr<ConfiguredSdk> CreateConfiguredSdk(
const std::unique_ptr<opentelemetry::sdk::configuration::Configuration> &model) const;

Expand Down
48 changes: 48 additions & 0 deletions sdk/include/opentelemetry/sdk/configuration/severity_number.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include <cstdint>

#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/common.yaml
// YAML-NODE: SeverityNumber
enum class SeverityNumber : std::uint8_t
{
trace,
trace2,
trace3,
trace4,
debug,
debug2,
debug3,
debug4,
info,
info2,
info3,
info4,
warn,
warn2,
warn3,
warn4,
error,
error2,
error3,
error4,
fatal,
fatal2,
fatal3,
fatal4
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
144 changes: 144 additions & 0 deletions sdk/src/configuration/configuration_parser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/resource_configuration.h"
#include "opentelemetry/sdk/configuration/sampler_configuration.h"
#include "opentelemetry/sdk/configuration/severity_number.h"
#include "opentelemetry/sdk/configuration/simple_log_record_processor_configuration.h"
#include "opentelemetry/sdk/configuration/simple_span_processor_configuration.h"
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
Expand Down Expand Up @@ -127,6 +128,134 @@ OtlpHttpEncoding ConfigurationParser::ParseOtlpHttpEncoding(
throw InvalidSchemaException(node->Location(), message);
}

SeverityNumber ConfigurationParser::ParseSeverityNumber(const std::unique_ptr<DocumentNode> &node,
const std::string &name) const
{
if (name == "trace")
{
return SeverityNumber::trace;
}

if (name == "trace2")
{
return SeverityNumber::trace2;
}

if (name == "trace3")
{
return SeverityNumber::trace3;
}

if (name == "trace4")
{
return SeverityNumber::trace4;
}

if (name == "debug")
{
return SeverityNumber::debug;
}

if (name == "debug2")
{
return SeverityNumber::debug2;
}

if (name == "debug3")
{
return SeverityNumber::debug3;
}

if (name == "debug4")
{
return SeverityNumber::debug4;
}

if (name == "info")
{
return SeverityNumber::info;
}

if (name == "info2")
{
return SeverityNumber::info2;
}

if (name == "info3")
{
return SeverityNumber::info3;
}

if (name == "info4")
{
return SeverityNumber::info4;
}

if (name == "warn")
{
return SeverityNumber::warn;
}

if (name == "warn2")
{
return SeverityNumber::warn2;
}

if (name == "warn3")
{
return SeverityNumber::warn3;
}

if (name == "warn4")
{
return SeverityNumber::warn4;
}

if (name == "error")
{
return SeverityNumber::error;
}

if (name == "error2")
{
return SeverityNumber::error2;
}

if (name == "error3")
{
return SeverityNumber::error3;
}

if (name == "error4")
{
return SeverityNumber::error4;
}

if (name == "fatal")
{
return SeverityNumber::fatal;
}

if (name == "fatal2")
{
return SeverityNumber::fatal2;
}

if (name == "fatal3")
{
return SeverityNumber::fatal3;
}

if (name == "fatal4")
{
return SeverityNumber::fatal4;
}

std::string message("Illegal SeverityNumber: ");
message.append(name);
throw InvalidSchemaException(node->Location(), message);
}

std::unique_ptr<StringArrayConfiguration> ConfigurationParser::ParseStringArrayConfiguration(
const std::unique_ptr<DocumentNode> &node) const
{
Expand Down Expand Up @@ -695,6 +824,8 @@ ConfigurationParser::ParsePrometheusPullMetricExporterConfiguration(
model->port = node->GetInteger("port", 9464);
model->without_scope_info = node->GetBoolean("without_scope_info", false);

// FIXME: without_target_info
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


child = node->GetChildNode("with_resource_constant_labels");
if (child)
{
Expand Down Expand Up @@ -921,6 +1052,8 @@ ConfigurationParser::ParsePullMetricReaderConfiguration(
}
}

// FIXME: cardinality_limits

return model;
}

Expand Down Expand Up @@ -1221,6 +1354,10 @@ std::unique_ptr<MeterProviderConfiguration> ConfigurationParser::ParseMeterProvi
}
}

// FIXME: exemplar_filter

// FIXME: meter_configurator/development

return model;
}

Expand Down Expand Up @@ -1991,6 +2128,9 @@ std::unique_ptr<Configuration> ConfigurationParser::Parse(std::unique_ptr<Docume

model->disabled = node->GetBoolean("disabled", false);

const std::string log_level = node->GetString("log_level", "info");
model->log_level = ParseSeverityNumber(node, log_level);

std::unique_ptr<DocumentNode> child;

child = node->GetChildNode("attribute_limits");
Expand Down Expand Up @@ -2029,6 +2169,10 @@ std::unique_ptr<Configuration> ConfigurationParser::Parse(std::unique_ptr<Docume
model->resource = ParseResourceConfiguration(child);
}

// FIXME: instrumentation/development

// FIXME: distribution

return model;
}

Expand Down
2 changes: 2 additions & 0 deletions sdk/src/configuration/configured_sdk.cc
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ std::unique_ptr<ConfiguredSdk> ConfiguredSdk::Create(

void ConfiguredSdk::Install()
{
opentelemetry::sdk::common::internal_log::GlobalLogHandler::SetLogLevel(log_level);

if (propagator)
{
opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator(propagator);
Expand Down
46 changes: 46 additions & 0 deletions sdk/src/configuration/sdk_builder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@
#include "opentelemetry/sdk/configuration/sampler_configuration.h"
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
#include "opentelemetry/sdk/configuration/sdk_builder.h"
#include "opentelemetry/sdk/configuration/severity_number.h"
#include "opentelemetry/sdk/configuration/simple_log_record_processor_configuration.h"
#include "opentelemetry/sdk/configuration/simple_span_processor_configuration.h"
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
Expand Down Expand Up @@ -1755,11 +1756,56 @@ void SdkBuilder::SetResource(
}
}

void SdkBuilder::SetLogLevel(
opentelemetry::sdk::common::internal_log::LogLevel &sdk_log_level,
opentelemetry::sdk::configuration::SeverityNumber model_log_level) const
{
sdk_log_level = opentelemetry::sdk::common::internal_log::LogLevel::Info;

switch (model_log_level)
{
case SeverityNumber::trace:
case SeverityNumber::trace2:
case SeverityNumber::trace3:
case SeverityNumber::trace4:
case SeverityNumber::debug:
case SeverityNumber::debug2:
case SeverityNumber::debug3:
case SeverityNumber::debug4:
sdk_log_level = opentelemetry::sdk::common::internal_log::LogLevel::Debug;
break;
case SeverityNumber::info:
case SeverityNumber::info2:
case SeverityNumber::info3:
case SeverityNumber::info4:
sdk_log_level = opentelemetry::sdk::common::internal_log::LogLevel::Info;
break;
case SeverityNumber::warn:
case SeverityNumber::warn2:
case SeverityNumber::warn3:
case SeverityNumber::warn4:
sdk_log_level = opentelemetry::sdk::common::internal_log::LogLevel::Warning;
break;
case SeverityNumber::error:
case SeverityNumber::error2:
case SeverityNumber::error3:
case SeverityNumber::error4:
case SeverityNumber::fatal:
case SeverityNumber::fatal2:
case SeverityNumber::fatal3:
case SeverityNumber::fatal4:
sdk_log_level = opentelemetry::sdk::common::internal_log::LogLevel::Error;
break;
}
}

std::unique_ptr<ConfiguredSdk> SdkBuilder::CreateConfiguredSdk(
const std::unique_ptr<opentelemetry::sdk::configuration::Configuration> &model) const
{
auto sdk = std::make_unique<ConfiguredSdk>();

SetLogLevel(sdk->log_level, model->log_level);

if (!model->disabled)
{
SetResource(sdk->resource, model->resource);
Expand Down
Loading