Skip to content

Commit 4c03b55

Browse files
committed
merged from upstream
2 parents 32097fa + b4328c0 commit 4c03b55

21 files changed

+645
-30
lines changed

.github/workflows/fossa.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
steps:
1515
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
1616

17-
- uses: fossas/fossa-action@93a52ecf7c3ac7eb40f5de77fd69b1a19524de94 # v1.5.0
17+
- uses: fossas/fossa-action@c0a7d013f84c8ee5e910593186598625513cc1e4 # v1.6.0
1818
with:
1919
api-key: ${{secrets.FOSSA_API_KEY}}
2020
team: OpenTelemetry

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ Increment the:
2727
* [DEVCONTAINER] Support customization and run as non-root user
2828
[#3270](https://github.com/open-telemetry/opentelemetry-cpp/pull/3270)
2929

30+
* [SDK] Add logger scope configurator
31+
[#3282](https://github.com/open-telemetry/opentelemetry-cpp/pull/3282)
32+
3033
Important changes:
3134

3235
* [SDK] Support OTEL_SDK_DISABLED environment variable

examples/grpc/tracer_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class GrpcServerCarrier : public opentelemetry::context::propagation::TextMapCar
5959
auto it = context_->client_metadata().find({key.data(), key.size()});
6060
if (it != context_->client_metadata().end())
6161
{
62-
return it->second.data();
62+
return opentelemetry::nostd::string_view(it->second.data(), it->second.size());
6363
}
6464
return "";
6565
}

sdk/b.ps1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
return (0)

sdk/include/opentelemetry/sdk/logs/logger.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
#include <memory>
77
#include <string>
88

9+
#include "logger_config.h"
910
#include "opentelemetry/version.h"
1011
#include "opentelemetry/logs/log_record.h"
1112
#include "opentelemetry/logs/logger.h"
13+
#include "opentelemetry/logs/noop.h"
1214
#include "opentelemetry/nostd/string_view.h"
1315
#include "opentelemetry/nostd/unique_ptr.h"
1416
#include "opentelemetry/sdk/instrumentationscope/instrumentation_scope.h"
@@ -65,6 +67,8 @@ class OPENTELEMETRY_EXPORT_TYPE Logger final : public opentelemetry::logs::Logge
6567
// logger-context.
6668
std::unique_ptr<instrumentationscope::InstrumentationScope> instrumentation_scope_;
6769
std::shared_ptr<LoggerContext> context_;
70+
LoggerConfig logger_config_;
71+
static opentelemetry::logs::NoopLogger kNoopLogger;
6872
};
6973

7074
} // namespace logs
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace logs
12+
{
13+
/**
14+
* LoggerConfig defines various configurable aspects of a Logger's behavior.
15+
* This class should not be used directly to configure a Logger's behavior, instead a
16+
* ScopeConfigurator should be used to compute the desired LoggerConfig which can then be used to
17+
* configure a Logger.
18+
*/
19+
class OPENTELEMETRY_EXPORT LoggerConfig
20+
{
21+
public:
22+
bool operator==(const LoggerConfig &other) const noexcept;
23+
24+
/**
25+
* Returns if the Logger is enabled or disabled. Loggers are enabled by default.
26+
* @return a boolean indicating if the Logger is enabled. Defaults to true.
27+
*/
28+
bool IsEnabled() const noexcept;
29+
30+
/**
31+
* Returns a LoggerConfig that represents an enabled Logger.
32+
* @return a static constant LoggerConfig that represents an enabled logger.
33+
*/
34+
static LoggerConfig Enabled();
35+
36+
/**
37+
* Returns a LoggerConfig that represents a disabled Logger. A disabled logger behaves like a
38+
* no-op logger.
39+
* @return a static constant LoggerConfig that represents a disabled logger.
40+
*/
41+
static LoggerConfig Disabled();
42+
43+
/**
44+
* Returns a LoggerConfig that represents a Logger configured with the default behavior.
45+
* The default behavior is guided by the OpenTelemetry specification.
46+
* @return a static constant LoggerConfig that represents a logger configured with default
47+
* behavior.
48+
*/
49+
static LoggerConfig Default();
50+
51+
private:
52+
explicit LoggerConfig(const bool disabled = false) : disabled_(disabled) {}
53+
54+
bool disabled_;
55+
};
56+
} // namespace logs
57+
} // namespace sdk
58+
OPENTELEMETRY_END_NAMESPACE

sdk/include/opentelemetry/sdk/logs/logger_context.h

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
#include <vector>
99

1010
#include "opentelemetry/version.h"
11+
#include "logger_config.h"
12+
#include "opentelemetry/sdk/instrumentationscope/scope_configurator.h"
1113
#include "opentelemetry/sdk/logs/processor.h"
1214
#include "opentelemetry/sdk/resource/resource.h"
1315

@@ -33,9 +35,15 @@ namespace logs
3335
class OPENTELEMETRY_EXPORT_TYPE LoggerContext
3436
{
3537
public:
36-
explicit LoggerContext(std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
37-
const opentelemetry::sdk::resource::Resource &resource =
38-
opentelemetry::sdk::resource::Resource::Create({})) noexcept;
38+
explicit LoggerContext(
39+
std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
40+
const opentelemetry::sdk::resource::Resource &resource =
41+
opentelemetry::sdk::resource::Resource::Create({}),
42+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator =
43+
std::make_unique<instrumentationscope::ScopeConfigurator<LoggerConfig>>(
44+
instrumentationscope::ScopeConfigurator<LoggerConfig>::Builder(
45+
LoggerConfig::Default())
46+
.Build())) noexcept;
3947

4048
/**
4149
* Attaches a log processor to list of configured processors to this logger context.
@@ -61,6 +69,13 @@ class OPENTELEMETRY_EXPORT_TYPE LoggerContext
6169
*/
6270
const opentelemetry::sdk::resource::Resource &GetResource() const noexcept;
6371

72+
/**
73+
* Obtain the ScopeConfigurator with this logger context.
74+
* @return The ScopeConfigurator for this logger context.
75+
*/
76+
const instrumentationscope::ScopeConfigurator<LoggerConfig> &GetLoggerConfigurator()
77+
const noexcept;
78+
6479
/**
6580
* Force all active LogProcessors to flush any buffered logs
6681
* within the given timeout.
@@ -76,6 +91,8 @@ class OPENTELEMETRY_EXPORT_TYPE LoggerContext
7691
// order of declaration is important here - resource object should be destroyed after processor.
7792
opentelemetry::sdk::resource::Resource resource_;
7893
std::unique_ptr<LogRecordProcessor> processor_;
94+
95+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator_;
7996
};
8097
} // namespace logs
8198
} // namespace sdk

sdk/include/opentelemetry/sdk/logs/logger_context_factory.h

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,36 @@ class OPENTELEMETRY_EXPORT_TYPE LoggerContextFactory
2424
{
2525
public:
2626
/**
27-
* Create a LoggerContext.
27+
* Create a LoggerContext with specified LogRecordProcessors.
28+
* @param processors A vector of log processors that can parse the logs.
29+
* @return A unique pointer to the created LoggerContext object.
2830
*/
2931
static std::unique_ptr<LoggerContext> Create(
3032
std::vector<std::unique_ptr<LogRecordProcessor>> &&processors);
3133

3234
/**
33-
* Create a LoggerContext.
35+
* Create a LoggerContext with specified LogRecordProcessors and OpenTelemetry resource.
36+
* @param processors A vector of log processors that can parse the logs.
37+
* @param resource The OpenTelemetry resource responsible for generating the logs.
38+
* @return A unique pointer to the created LoggerContext object.
3439
*/
3540
static std::unique_ptr<LoggerContext> Create(
3641
std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
3742
const opentelemetry::sdk::resource::Resource &resource);
43+
44+
/**
45+
* Create a LoggerContext with specified LogRecordProcessors, OpenTelemetry resource and a logger
46+
* ScopeConfigurator.
47+
* @param processors A vector of log processors that can parse the logs.
48+
* @param resource The OpenTelemetry resource responsible for generating the logs.
49+
* @param logger_configurator A ScopeConfigurator that can be used compute the LoggerConfig for a
50+
* given InstrumentationScope.
51+
* @return A unique pointer to the created LoggerContext object.
52+
*/
53+
static std::unique_ptr<LoggerContext> Create(
54+
std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
55+
const opentelemetry::sdk::resource::Resource &resource,
56+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator);
3857
};
3958

4059
} // namespace logs

sdk/include/opentelemetry/sdk/logs/logger_provider.h

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,37 @@ class OPENTELEMETRY_EXPORT_TYPE LoggerProvider final : public opentelemetry::log
3232
{
3333
public:
3434
/**
35-
* Initialize a new logger provider
36-
* @param processor The span processor for this logger provider. This must
35+
* Initialize a new logger provider.
36+
* @param processor The log record processor for this logger provider. This must
3737
* not be a nullptr.
3838
* @param resource The resources for this logger provider.
3939
*/
40-
explicit LoggerProvider(std::unique_ptr<LogRecordProcessor> &&processor,
41-
const opentelemetry::sdk::resource::Resource &resource =
42-
opentelemetry::sdk::resource::Resource::Create({})) noexcept;
40+
explicit LoggerProvider(
41+
std::unique_ptr<LogRecordProcessor> &&processor,
42+
const opentelemetry::sdk::resource::Resource &resource =
43+
opentelemetry::sdk::resource::Resource::Create({}),
44+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator =
45+
std::make_unique<instrumentationscope::ScopeConfigurator<LoggerConfig>>(
46+
instrumentationscope::ScopeConfigurator<LoggerConfig>::Builder(
47+
LoggerConfig::Default())
48+
.Build())) noexcept;
4349

44-
explicit LoggerProvider(std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
45-
const opentelemetry::sdk::resource::Resource &resource =
46-
opentelemetry::sdk::resource::Resource::Create({})) noexcept;
50+
/**
51+
* Initialize a new logger provider.
52+
* @param processors A list of log record processors for this logger provider.
53+
* @param resource The resources for this logger provider.
54+
* @param logger_configurator The scope configurator used to determine the configs for loggers
55+
* created using this logger provider.
56+
*/
57+
explicit LoggerProvider(
58+
std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
59+
const opentelemetry::sdk::resource::Resource &resource =
60+
opentelemetry::sdk::resource::Resource::Create({}),
61+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator =
62+
std::make_unique<instrumentationscope::ScopeConfigurator<LoggerConfig>>(
63+
instrumentationscope::ScopeConfigurator<LoggerConfig>::Builder(
64+
LoggerConfig::Default())
65+
.Build())) noexcept;
4766

4867
/**
4968
* Initialize a new logger provider. A processor must later be assigned

sdk/include/opentelemetry/sdk/logs/logger_provider_factory.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@ class OPENTELEMETRY_EXPORT_TYPE LoggerProviderFactory
3737
std::unique_ptr<LogRecordProcessor> &&processor,
3838
const opentelemetry::sdk::resource::Resource &resource);
3939

40+
/**
41+
* Create a LoggerProvider.
42+
*/
43+
static std::unique_ptr<opentelemetry::sdk::logs::LoggerProvider> Create(
44+
std::unique_ptr<LogRecordProcessor> &&processor,
45+
const opentelemetry::sdk::resource::Resource &resource,
46+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator);
47+
4048
/**
4149
* Create a LoggerProvider.
4250
*/
@@ -50,6 +58,14 @@ class OPENTELEMETRY_EXPORT_TYPE LoggerProviderFactory
5058
std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
5159
const opentelemetry::sdk::resource::Resource &resource);
5260

61+
/**
62+
* Create a LoggerProvider.
63+
*/
64+
static std::unique_ptr<opentelemetry::sdk::logs::LoggerProvider> Create(
65+
std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
66+
const opentelemetry::sdk::resource::Resource &resource,
67+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator);
68+
5369
/**
5470
* Create a LoggerProvider.
5571
*/

0 commit comments

Comments
 (0)