Class: Applicaster::Logger::Railtie

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/applicaster/logger/railtie.rb

Constant Summary collapse

DEFAULT_APP_NAME =
proc { Rails.application.class.parent.to_s.underscore }
INTERNAL_PARAMS =
%w(controller action format only_path)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.uri_logstash_config(uri) ⇒ Object



38
39
40
41
42
43
44
# 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

Instance Method Details

#default_fieldsObject



76
77
78
79
80
81
82
# 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) ⇒ Object



65
66
67
68
69
70
71
72
73
74
# 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) ⇒ Object



57
58
59
60
61
62
63
# 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) ⇒ Object



46
47
48
49
50
51
52
53
54
55
# 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