class Applicaster::Logger::Railtie

Constants

DEFAULT_APP_NAME
INTERNAL_PARAMS

taken from github.com/rails/rails/blob/master/actionpack/lib/action_controller/log_subscriber.rb

Public Class Methods

uri_logstash_config(uri) click to toggle source
# File lib/applicaster/logger/railtie.rb, line 38
def self.uri_logstash_config(uri)
  parsed = ::URI.parse(uri)
  # params parsing can be removed if this is merged:
  # https://github.com/dwbutler/logstash-logger/pull/148
  params = Hash[CGI.parse(parsed.query.to_s).map {|k,v| [k,v.first]}]
  { uri: uri, buffer_max_items: Integer(params["buffer_max_items"] || 1000)}
end

Public Instance Methods

default_fields() click to toggle source
# File lib/applicaster/logger/railtie.rb, line 76
def default_fields
  config = ::Rails.application.config.applicaster_logger
  {
    application: config.application_name,
    environment: Rails.env.to_s
  }.merge(config.logzio_token ? { token: config.logzio_token } : {})
end
new_logger(facility) click to toggle source
# File lib/applicaster/logger/railtie.rb, line 65
def new_logger(facility)
  config = ::Rails.application.config.applicaster_logger
  LogStashLogger.new(config.logstash_config).tap do |logger|
    logger.level = config.level

    logger.formatter = Applicaster::Logger::Formatter.new(
      default_fields.merge({ facility: facility })
    )
  end
end
setup_logger(app) click to toggle source
# File lib/applicaster/logger/railtie.rb, line 57
def setup_logger(app)
  config = app.config.applicaster_logger
  app.config.logger = new_logger("rails_logger")
  Applicaster::Logger::Sidekiq.setup(new_logger("sidekiq")) if defined?(::Sidekiq)
  Sidetiq.logger = new_logger("sidetiq") if defined?(Sidetiq)
  Delayed::Worker.logger = new_logger("delayed") if defined?(Delayed)
end
setup_lograge(app) click to toggle source
# File lib/applicaster/logger/railtie.rb, line 46
def setup_lograge(app)
  app.config.lograge.enabled = true
  app.config.lograge.formatter = Applicaster::Logger::Lograge::Formatter.new
  app.config.lograge.custom_options = lambda do |event|
    {
      params: event.payload[:params].except(*INTERNAL_PARAMS).inspect,
      custom_params: event.payload[:custom_params],
    }
  end
end