diff --git a/sdk/lib/opentelemetry/sdk/forwarding_logger.rb b/sdk/lib/opentelemetry/sdk/forwarding_logger.rb index a1dbdbae2..2bb467a34 100644 --- a/sdk/lib/opentelemetry/sdk/forwarding_logger.rb +++ b/sdk/lib/opentelemetry/sdk/forwarding_logger.rb @@ -35,10 +35,10 @@ def initialize(logger, level:) end end - def add(severity, message = nil, progname = nil) + def add(severity, message = nil, progname = nil, &block) return true if severity < @level - @logger.add(severity, message, progname) + @logger.add(severity, message, progname, &block) end def debug(progname = nil, &block) diff --git a/sdk/test/opentelemetry/sdk/configurator_test.rb b/sdk/test/opentelemetry/sdk/configurator_test.rb index 4a425a8e8..50e6c18ef 100644 --- a/sdk/test/opentelemetry/sdk/configurator_test.rb +++ b/sdk/test/opentelemetry/sdk/configurator_test.rb @@ -31,12 +31,13 @@ _(configurator.logger).must_be_instance_of(Logger) end - it 'assigns the logger to OpenTelemetry.logger' do + it 'assigns the logger to OpenTelemetry.logger, with a default level of info' do custom_logger = Logger.new(File::NULL, level: 'INFO') _(OpenTelemetry.logger).wont_equal custom_logger OpenTelemetry::SDK.configure { |c| c.logger = custom_logger } _(OpenTelemetry.logger.instance_variable_get(:@logger)).must_equal custom_logger + _(OpenTelemetry.logger.instance_variable_get(:@level)).must_equal Logger::INFO _(OpenTelemetry.logger).must_be_instance_of(OpenTelemetry::SDK::ForwardingLogger) end @@ -62,6 +63,26 @@ _(log_stream.string).must_be_empty end end + + it 'forwards log messages supplied as parameters' do + OpenTelemetry::TestHelpers.with_test_logger do |log_stream| + custom_logger = Logger.new(log_stream) + OpenTelemetry::SDK.configure { |c| c.logger = custom_logger } + message = 'The forwarding logger should forward this message' + OpenTelemetry.logger.info(message) + _(log_stream.string).must_include message + end + end + + it 'forwards log messages supplied in blocks' do + OpenTelemetry::TestHelpers.with_test_logger do |log_stream| + custom_logger = Logger.new(log_stream) + OpenTelemetry::SDK.configure { |c| c.logger = custom_logger } + message = 'The forwarding logger should forward this message' + OpenTelemetry.logger.info { message } + _(log_stream.string).must_include message + end + end end describe '#resource=' do