99#include " opentelemetry/context/context_value.h"
1010#include " opentelemetry/context/runtime_context.h"
1111#include " opentelemetry/logs/log_record.h"
12+ #include " opentelemetry/logs/noop.h"
1213#include " opentelemetry/nostd/shared_ptr.h"
1314#include " opentelemetry/nostd/string_view.h"
1415#include " opentelemetry/nostd/unique_ptr.h"
1516#include " opentelemetry/nostd/variant.h"
1617#include " opentelemetry/sdk/instrumentationscope/instrumentation_scope.h"
18+ #include " opentelemetry/sdk/instrumentationscope/scope_configurator.h"
1719#include " opentelemetry/sdk/logs/logger.h"
20+ #include " opentelemetry/sdk/logs/logger_config.h"
1821#include " opentelemetry/sdk/logs/logger_context.h"
1922#include " opentelemetry/sdk/logs/processor.h"
2023#include " opentelemetry/sdk/logs/recordable.h"
@@ -31,22 +34,34 @@ namespace logs
3134namespace trace_api = opentelemetry::trace;
3235namespace common = opentelemetry::common;
3336
37+ opentelemetry::logs::NoopLogger Logger::kNoopLogger = opentelemetry::logs::NoopLogger();
38+
3439Logger::Logger (
3540 opentelemetry::nostd::string_view name,
3641 std::shared_ptr<LoggerContext> context,
3742 std::unique_ptr<instrumentationscope::InstrumentationScope> instrumentation_scope) noexcept
3843 : logger_name_(std::string(name)),
3944 instrumentation_scope_(std::move(instrumentation_scope)),
40- context_(std::move(context))
45+ context_(std::move(context)),
46+ logger_config_(context_->GetLoggerConfigurator ().ComputeConfig(*instrumentation_scope_))
4147{}
4248
4349const opentelemetry::nostd::string_view Logger::GetName () noexcept
4450{
51+ if (!logger_config_.IsEnabled ())
52+ {
53+ return kNoopLogger .GetName ();
54+ }
4555 return logger_name_;
4656}
4757
4858opentelemetry::nostd::unique_ptr<opentelemetry::logs::LogRecord> Logger::CreateLogRecord () noexcept
4959{
60+ if (!logger_config_.IsEnabled ())
61+ {
62+ return kNoopLogger .CreateLogRecord ();
63+ }
64+
5065 auto recordable = context_->GetProcessor ().MakeRecordable ();
5166
5267 recordable->SetObservedTimestamp (std::chrono::system_clock::now ());
@@ -90,6 +105,11 @@ opentelemetry::nostd::unique_ptr<opentelemetry::logs::LogRecord> Logger::CreateL
90105void Logger::EmitLogRecord (
91106 opentelemetry::nostd::unique_ptr<opentelemetry::logs::LogRecord> &&log_record) noexcept
92107{
108+ if (!logger_config_.IsEnabled ())
109+ {
110+ return kNoopLogger .EmitLogRecord (std::move (log_record));
111+ }
112+
93113 if (!log_record)
94114 {
95115 return ;
0 commit comments