module SemanticLogger::Formatters

def self.factory(formatter)

- Any object that responds to :call
- Proc
- Instance of any of SemanticLogger::Formatters
- Hash ( Symbol => { options })
- Symbol
Supports formatter supplied as:

Return formatter that responds to call.
def self.factory(formatter)
  if formatter.is_a?(Symbol)
    SemanticLogger::Utils.constantize_symbol(formatter, "SemanticLogger::Formatters").new
  elsif formatter.is_a?(Hash) && formatter.size.positive?
    fmt, options = formatter.first
    SemanticLogger::Utils.constantize_symbol(fmt.to_sym, "SemanticLogger::Formatters").new(**options)
  elsif formatter.respond_to?(:call)
    formatter
  else
    raise(ArgumentError, "Unknown formatter: #{formatter.inspect}")
  end
end