diff --git a/lib/observable/instrumenter.rb b/lib/observable/instrumenter.rb index 6ac0a75..884c4da 100644 --- a/lib/observable/instrumenter.rb +++ b/lib/observable/instrumenter.rb @@ -1,5 +1,6 @@ require "opentelemetry/sdk" require_relative "configuration" +require_relative "serialization_depth" module Observable class Instrumenter @@ -8,6 +9,7 @@ class Instrumenter def initialize(tracer: nil, config: nil) @config = config || Configuration.config @tracer = tracer || OpenTelemetry.tracer_provider.tracer(@config.tracer_name) + @serialization_depth = SerializationDepth.new(@config.serialization_depth) end def instrument(caller_binding = nil, &block) @@ -312,11 +314,7 @@ def find_formatter_for_class(class_name) end def get_serialization_depth_for_class(class_name) - if @config.serialization_depth.is_a?(Integer) - return @config.serialization_depth - end - - @config.serialization_depth[class_name] || @config.serialization_depth[:default] || @config.serialization_depth["default"] || 2 + @serialization_depth.for_class(class_name) end def should_filter_pii?(param_name) diff --git a/lib/observable/serialization_depth.rb b/lib/observable/serialization_depth.rb new file mode 100644 index 0000000..a7669a5 --- /dev/null +++ b/lib/observable/serialization_depth.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Observable + class SerializationDepth + DEFAULT_DEPTH = 2 + + def initialize(config) + @config = config + end + + def for_class(class_name) + if @config.is_a?(Integer) + @config + else + @config[class_name] || @config[:default] || @config["default"] || DEFAULT_DEPTH + end + end + end +end