From 5fbe2cba737801a0b25e20921451e71448f30b98 Mon Sep 17 00:00:00 2001 From: Kayla Reopelle Date: Tue, 11 Mar 2025 15:45:12 -0700 Subject: [PATCH 1/3] feat: Use logger.warn for log attribute validation Update the way users are notified about invalid log record attribute keys and values by using OpenTelemetry.logger.warn instead of OpenTelemetry.handle_error. Also, include the key with the invalid type in the message. --- logs_sdk/lib/opentelemetry/sdk/logs/log_record.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/logs_sdk/lib/opentelemetry/sdk/logs/log_record.rb b/logs_sdk/lib/opentelemetry/sdk/logs/log_record.rb index dc7cb83373..484beb8af5 100644 --- a/logs_sdk/lib/opentelemetry/sdk/logs/log_record.rb +++ b/logs_sdk/lib/opentelemetry/sdk/logs/log_record.rb @@ -139,10 +139,10 @@ def validate_attributes(attrs) # Future refactor opportunity: https://github.com/open-telemetry/opentelemetry-ruby/issues/1739 attrs.keep_if do |k, v| if !Internal.valid_key?(k) - OpenTelemetry.handle_error(message: "invalid log record attribute key type #{k.class} on record: '#{body}'") + OpenTelemetry.logger.warn("Invalid log record attribute key type #{k.class} for key #{k.inspect} on record: '#{body}'. Attribute keys must be Strings. Dropping attribute.") return false elsif !Internal.valid_value?(v) - OpenTelemetry.handle_error(message: "invalid log record attribute value type #{v.class} for key '#{k}' on record: '#{body}'") + OpenTelemetry.logger.warn("Invalid log record attribute value type #{v.class} for key '#{k}' on record: '#{body}'. Dropping attribute.") return false end From 2e20bc5f535ce63d640c5bcd64144658264f6c9b Mon Sep 17 00:00:00 2001 From: Kayla Reopelle Date: Tue, 11 Mar 2025 15:52:07 -0700 Subject: [PATCH 2/3] test: Update tests for new log message --- logs_sdk/Gemfile | 1 + logs_sdk/test/opentelemetry/sdk/logs/log_record_test.rb | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/logs_sdk/Gemfile b/logs_sdk/Gemfile index 69362a59bf..3acc0a2d63 100644 --- a/logs_sdk/Gemfile +++ b/logs_sdk/Gemfile @@ -12,3 +12,4 @@ gem 'opentelemetry-api', path: '../api' gem 'opentelemetry-logs-api', path: '../logs_api' gem 'opentelemetry-sdk', path: '../sdk' gem 'opentelemetry-test-helpers', path: '../test_helpers' +gem 'mutex_m' if RUBY_VERSION >= '3.4' diff --git a/logs_sdk/test/opentelemetry/sdk/logs/log_record_test.rb b/logs_sdk/test/opentelemetry/sdk/logs/log_record_test.rb index 42d38b0125..40771066af 100644 --- a/logs_sdk/test/opentelemetry/sdk/logs/log_record_test.rb +++ b/logs_sdk/test/opentelemetry/sdk/logs/log_record_test.rb @@ -123,14 +123,14 @@ it 'emits an error message if attribute key is invalid' do OpenTelemetry::TestHelpers.with_test_logger do |log_stream| logger.on_emit(attributes: { a: 'a' }) - assert_match(/invalid log record attribute key type Symbol/, log_stream.string) + assert_match(/Invalid log record attribute key type Symbol/, log_stream.string) end end it 'emits an error message if the attribute value is invalid' do OpenTelemetry::TestHelpers.with_test_logger do |log_stream| logger.on_emit(attributes: { 'a' => Class.new }) - assert_match(/invalid log record attribute value type Class/, log_stream.string) + assert_match(/Invalid log record attribute value type Class/, log_stream.string) end end From 94955530f674b8feb58157760c8ba838d74a919a Mon Sep 17 00:00:00 2001 From: Kayla Reopelle Date: Tue, 11 Mar 2025 16:53:04 -0700 Subject: [PATCH 3/3] chore: Rubocop Bundler/OrderedGems --- logs_sdk/Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logs_sdk/Gemfile b/logs_sdk/Gemfile index 3acc0a2d63..f600412b44 100644 --- a/logs_sdk/Gemfile +++ b/logs_sdk/Gemfile @@ -8,8 +8,8 @@ source 'https://rubygems.org' gemspec +gem 'mutex_m' if RUBY_VERSION >= '3.4' gem 'opentelemetry-api', path: '../api' gem 'opentelemetry-logs-api', path: '../logs_api' gem 'opentelemetry-sdk', path: '../sdk' gem 'opentelemetry-test-helpers', path: '../test_helpers' -gem 'mutex_m' if RUBY_VERSION >= '3.4'