Sha256: f99d63b25b3a2ec9707d1aaf247eeebb84fa9433fc25ebe978ed26e907fa87f3

Contents?: true

Size: 1.5 KB

Versions: 35

Compression:

Stored size: 1.5 KB

Contents

require 'rails/railtie'

module LogStashLogger
  def self.setup(app)
    return unless app.config.logstash.present?

    logger_options = app.config.logstash

    sanitized_logger_options = if logger_options.is_a?(Array)
                                 logger_options.map do |opts|
                                   sanitize_logger_options(app, opts)
                                 end
                               else
                                 sanitize_logger_options(app, logger_options)
                               end

    logger = LogStashLogger.new(sanitized_logger_options)

    logger.level = ::Logger.const_get(app.config.log_level.to_s.upcase)

    app.config.logger = logger
  end

  def self.sanitize_logger_options(app, logger_options)
    # Convert logger options to OrderedOptions if regular Hash
    logger_options = ActiveSupport::OrderedOptions.new.merge(logger_options)

    if parsed_uri_options = LogStashLogger::Device.parse_uri_config(logger_options)
      logger_options.delete(:uri)
      logger_options.merge!(parsed_uri_options)
    end

    if logger_options.type == :file
      logger_options.path ||= app.config.paths["log"].first
    end

    if app.config.respond_to?(:autoflush_log)
      logger_options.sync = app.config.autoflush_log
    end

    logger_options
  end

  class Railtie < ::Rails::Railtie
    config.logstash = ActiveSupport::OrderedOptions.new

    initializer :logstash_logger, before: :initialize_logger do |app|
      LogStashLogger.setup(app)
    end
  end
end

Version data entries

35 entries across 35 versions & 3 rubygems

Version Path
logstash-logger-p-0.26.1 lib/logstash-logger/railtie.rb
logstash-logger-yajl-0.27.0 lib/logstash-logger/railtie.rb
logstash-logger-0.26.1 lib/logstash-logger/railtie.rb
logstash-logger-0.26.0 lib/logstash-logger/railtie.rb
logstash-logger-0.25.1 lib/logstash-logger/railtie.rb
logstash-logger-0.25.0 lib/logstash-logger/railtie.rb
logstash-logger-0.24.1 lib/logstash-logger/railtie.rb
logstash-logger-0.24.0 lib/logstash-logger/railtie.rb
logstash-logger-0.23.0 lib/logstash-logger/railtie.rb
logstash-logger-0.22.1 lib/logstash-logger/railtie.rb
logstash-logger-0.22.0 lib/logstash-logger/railtie.rb
logstash-logger-0.21.0 lib/logstash-logger/railtie.rb
logstash-logger-0.20.1 lib/logstash-logger/railtie.rb
logstash-logger-0.20.0 lib/logstash-logger/railtie.rb
logstash-logger-0.19.2 lib/logstash-logger/railtie.rb
logstash-logger-0.19.1 lib/logstash-logger/railtie.rb
logstash-logger-0.19.0 lib/logstash-logger/railtie.rb
logstash-logger-0.18.1 lib/logstash-logger/railtie.rb
logstash-logger-0.18.0 lib/logstash-logger/railtie.rb
logstash-logger-0.17.0 lib/logstash-logger/railtie.rb