Skip to content

Commit 0c57591

Browse files
committed
[SDK] Add logger scope configurator
1 parent 3212b0f commit 0c57591

File tree

13 files changed

+179
-14
lines changed

13 files changed

+179
-14
lines changed

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

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

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

7074
} // namespace logs
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+
class LoggerConfig
14+
{
15+
public:
16+
bool operator==(const LoggerConfig &other) const noexcept;
17+
18+
bool IsEnabled() const noexcept;
19+
20+
static LoggerConfig Enabled();
21+
22+
static LoggerConfig Disabled();
23+
24+
static LoggerConfig Default();
25+
26+
private:
27+
explicit LoggerConfig(const bool disabled = false) : disabled_(disabled) {}
28+
29+
bool disabled_;
30+
static const LoggerConfig kDisabledConfig;
31+
static const LoggerConfig kDefaultConfig;
32+
33+
};
34+
} // namespace logs
35+
} // namespace sdk
36+
OPENTELEMETRY_END_NAMESPACE

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#include <memory>
88
#include <vector>
99

10+
#include "logger_config.h"
11+
#include "opentelemetry/sdk/instrumentationscope/scope_configurator.h"
1012
#include "opentelemetry/sdk/logs/processor.h"
1113
#include "opentelemetry/sdk/resource/resource.h"
1214
#include "opentelemetry/version.h"
@@ -35,7 +37,12 @@ class LoggerContext
3537
public:
3638
explicit LoggerContext(std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
3739
const opentelemetry::sdk::resource::Resource &resource =
38-
opentelemetry::sdk::resource::Resource::Create({})) noexcept;
40+
opentelemetry::sdk::resource::Resource::Create({}),
41+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator =
42+
std::make_unique<instrumentationscope::ScopeConfigurator<LoggerConfig>>(
43+
instrumentationscope::ScopeConfigurator<LoggerConfig>::Builder(LoggerConfig::Default())
44+
.Build()
45+
)) noexcept;
3946

4047
/**
4148
* Attaches a log processor to list of configured processors to this logger context.
@@ -61,6 +68,8 @@ class LoggerContext
6168
*/
6269
const opentelemetry::sdk::resource::Resource &GetResource() const noexcept;
6370

71+
const instrumentationscope::ScopeConfigurator<LoggerConfig> &GetLoggerConfigurator() const noexcept;
72+
6473
/**
6574
* Force all active LogProcessors to flush any buffered logs
6675
* within the given timeout.
@@ -76,6 +85,8 @@ class LoggerContext
7685
// order of declaration is important here - resource object should be destroyed after processor.
7786
opentelemetry::sdk::resource::Resource resource_;
7887
std::unique_ptr<LogRecordProcessor> processor_;
88+
89+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator_;
7990
};
8091
} // namespace logs
8192
} // namespace sdk

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ class LoggerContextFactory
3535
static std::unique_ptr<LoggerContext> Create(
3636
std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
3737
const opentelemetry::sdk::resource::Resource &resource);
38+
39+
/**
40+
* Create a LoggerContext.
41+
*/
42+
static std::unique_ptr<LoggerContext> Create(
43+
std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
44+
const opentelemetry::sdk::resource::Resource &resource,
45+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator);
3846
};
3947

4048
} // namespace logs

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,15 @@ class OPENTELEMETRY_EXPORT LoggerProvider final : public opentelemetry::logs::Lo
3939
*/
4040
explicit LoggerProvider(std::unique_ptr<LogRecordProcessor> &&processor,
4141
const opentelemetry::sdk::resource::Resource &resource =
42-
opentelemetry::sdk::resource::Resource::Create({})) noexcept;
42+
opentelemetry::sdk::resource::Resource::Create({}),
43+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator =
44+
std::make_unique<instrumentationscope::ScopeConfigurator<LoggerConfig>>(instrumentationscope::ScopeConfigurator<LoggerConfig>::Builder(LoggerConfig::Default()).Build())) noexcept;
4345

4446
explicit LoggerProvider(std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
4547
const opentelemetry::sdk::resource::Resource &resource =
46-
opentelemetry::sdk::resource::Resource::Create({})) noexcept;
48+
opentelemetry::sdk::resource::Resource::Create({}),
49+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator =
50+
std::make_unique<instrumentationscope::ScopeConfigurator<LoggerConfig>>(instrumentationscope::ScopeConfigurator<LoggerConfig>::Builder(LoggerConfig::Default()).Build())) noexcept;
4751

4852
/**
4953
* 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 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 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
*/

sdk/src/logs/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@ add_library(
1515
simple_log_record_processor_factory.cc
1616
batch_log_record_processor.cc
1717
batch_log_record_processor_factory.cc
18+
logger_config.cc
1819
logger_context.cc
1920
logger_context_factory.cc
2021
multi_log_record_processor.cc
2122
multi_log_record_processor_factory.cc
2223
multi_recordable.cc
2324
read_write_log_record.cc
24-
readable_log_record.cc)
25+
readable_log_record.cc
26+
)
2527

2628
set_target_properties(opentelemetry_logs PROPERTIES EXPORT_NAME logs)
2729

sdk/src/logs/logger.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,18 @@ namespace logs
3131
namespace trace_api = opentelemetry::trace;
3232
namespace common = opentelemetry::common;
3333

34+
const opentelemetry::logs::NoopLogger Logger::kNoopLogger = opentelemetry::logs::NoopLogger();
35+
36+
// TODO: Implement configurator logic
37+
3438
Logger::Logger(
3539
opentelemetry::nostd::string_view name,
3640
std::shared_ptr<LoggerContext> context,
3741
std::unique_ptr<instrumentationscope::InstrumentationScope> instrumentation_scope) noexcept
3842
: logger_name_(std::string(name)),
3943
instrumentation_scope_(std::move(instrumentation_scope)),
40-
context_(std::move(context))
44+
context_(std::move(context)),
45+
logger_config_(context_->GetLoggerConfigurator().ComputeConfig(*instrumentation_scope_))
4146
{}
4247

4348
const opentelemetry::nostd::string_view Logger::GetName() noexcept

sdk/src/logs/logger_config.cc

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include "opentelemetry/sdk/logs/logger_config.h"
5+
6+
OPENTELEMETRY_BEGIN_NAMESPACE
7+
namespace sdk
8+
{
9+
namespace logs
10+
{
11+
12+
const LoggerConfig LoggerConfig::kDefaultConfig = LoggerConfig();
13+
const LoggerConfig LoggerConfig::kDisabledConfig = LoggerConfig(true);
14+
15+
bool LoggerConfig::operator==(const LoggerConfig &other) const noexcept
16+
{
17+
return disabled_ == other.disabled_;
18+
}
19+
20+
bool LoggerConfig::IsEnabled() const noexcept
21+
{
22+
return !disabled_;
23+
}
24+
25+
LoggerConfig LoggerConfig::Enabled()
26+
{
27+
return kDefaultConfig;
28+
}
29+
30+
LoggerConfig LoggerConfig::Disabled()
31+
{
32+
return kDisabledConfig;
33+
}
34+
35+
LoggerConfig LoggerConfig::Default()
36+
{
37+
return kDefaultConfig;
38+
}
39+
40+
} // namespace logs
41+
} // namespace sdk
42+
OPENTELEMETRY_END_NAMESPACE

sdk/src/logs/logger_context.cc

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@ namespace logs
1919
{
2020

2121
LoggerContext::LoggerContext(std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
22-
const opentelemetry::sdk::resource::Resource &resource) noexcept
22+
const opentelemetry::sdk::resource::Resource &resource,
23+
std::unique_ptr<instrumentationscope::ScopeConfigurator<LoggerConfig>> logger_configurator) noexcept
2324
: resource_(resource),
2425
processor_(
25-
std::unique_ptr<LogRecordProcessor>(new MultiLogRecordProcessor(std::move(processors))))
26+
std::unique_ptr<LogRecordProcessor>(new MultiLogRecordProcessor(std::move(processors)))),
27+
logger_configurator_(std::move(logger_configurator))
2628
{}
2729

2830
void LoggerContext::AddProcessor(std::unique_ptr<LogRecordProcessor> processor) noexcept
@@ -41,6 +43,12 @@ const opentelemetry::sdk::resource::Resource &LoggerContext::GetResource() const
4143
return resource_;
4244
}
4345

46+
const instrumentationscope::ScopeConfigurator<LoggerConfig> &LoggerContext::GetLoggerConfigurator()
47+
const noexcept
48+
{
49+
return *logger_configurator_;
50+
}
51+
4452
bool LoggerContext::ForceFlush(std::chrono::microseconds timeout) noexcept
4553
{
4654
return processor_->ForceFlush(timeout);

0 commit comments

Comments
 (0)