Sha256: 34ee6b77a58abef4a3a57cc4fdbfe8b7061cd16ce6e14dba973a66dcc6157321

Contents?: true

Size: 1.55 KB

Versions: 6

Compression:

Stored size: 1.55 KB

Contents

require 'logstash-logger/formatter/base'

module LogStashLogger
	module Formatter
		DEFAULT_FORMATTER = :json_lines

    autoload :LogStashEvent, 'logstash-logger/formatter/logstash_event'
    autoload :Json, 'logstash-logger/formatter/json'
    autoload :JsonLines, 'logstash-logger/formatter/json_lines'
    autoload :Cee, 'logstash-logger/formatter/cee'
    autoload :CeeSyslog, 'logstash-logger/formatter/cee_syslog'

    def self.new(formatter_type, customize_event: nil)
      build_formatter(formatter_type, customize_event)
    end

    def self.build_formatter(formatter_type, customize_event)
      formatter_type ||= DEFAULT_FORMATTER

      formatter = if custom_formatter_instance?(formatter_type)
        formatter_type
      elsif custom_formatter_class?(formatter_type)
        formatter_type.new
      else
        formatter_klass(formatter_type).new(customize_event: customize_event)
      end

      formatter.send(:extend, ::LogStashLogger::TaggedLogging::Formatter)
      formatter
    end

    def self.formatter_klass(formatter_type)
      case formatter_type.to_sym
      when :json_lines then JsonLines
      when :json then Json
      when :logstash_event then LogStashEvent
      when :cee then Cee
      when :cee_syslog then CeeSyslog
      else fail ArgumentError, 'Invalid formatter'
      end
    end

    def self.custom_formatter_instance?(formatter_type)
      formatter_type.respond_to?(:call)
    end

    def self.custom_formatter_class?(formatter_type)
      formatter_type.is_a?(Class) && formatter_type.method_defined?(:call)
    end
	end
end

Version data entries

6 entries across 6 versions & 3 rubygems

Version Path
logstash-logger-p-0.26.1 lib/logstash-logger/formatter.rb
logstash-logger-yajl-0.27.0 lib/logstash-logger/formatter.rb
logstash-logger-0.26.1 lib/logstash-logger/formatter.rb
logstash-logger-0.26.0 lib/logstash-logger/formatter.rb
logstash-logger-0.25.1 lib/logstash-logger/formatter.rb
logstash-logger-0.25.0 lib/logstash-logger/formatter.rb