Sha256: d4a5233eb52b15d3dba80e5dd36e0d190193628370587dc9003e67ccf011c8bc

Contents?: true

Size: 1.4 KB

Versions: 6

Compression:

Stored size: 1.4 KB

Contents

module SemanticLogger
  module Formatters
    autoload :Base,     "semantic_logger/formatters/base"
    autoload :Color,    "semantic_logger/formatters/color"
    autoload :Default,  "semantic_logger/formatters/default"
    autoload :Json,     "semantic_logger/formatters/json"
    autoload :Raw,      "semantic_logger/formatters/raw"
    autoload :OneLine,  "semantic_logger/formatters/one_line"
    autoload :Signalfx, "semantic_logger/formatters/signalfx"
    autoload :Syslog,   "semantic_logger/formatters/syslog"
    autoload :Fluentd,  "semantic_logger/formatters/fluentd"
    autoload :Logfmt,   "semantic_logger/formatters/logfmt"

    # Return formatter that responds to call.
    #
    # Supports formatter supplied as:
    # - Symbol
    # - Hash ( Symbol => { options })
    # - Instance of any of SemanticLogger::Formatters
    # - Proc
    # - Any object 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
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
semantic_logger-4.11.0 lib/semantic_logger/formatters.rb
semantic_logger-4.10.0 lib/semantic_logger/formatters.rb
semantic_logger-4.9.0 lib/semantic_logger/formatters.rb
semantic_logger-4.8.2 lib/semantic_logger/formatters.rb
semantic_logger-4.8.1 lib/semantic_logger/formatters.rb
semantic_logger-4.8.0 lib/semantic_logger/formatters.rb