logstasher 1.4.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc18d114cfc41499a37e388cc18a1cf2608ba935e629d6dd7c4bf6f9382bdbf1
4
- data.tar.gz: 38646241250be07048968e31e807a5683b7342916d018220eb961465ca014307
3
+ metadata.gz: e438a36935fc002e2de28f362171174d01908e321a432a45c0b6d5ba607593ff
4
+ data.tar.gz: 2076d9f4e694686bafc239e90f3c426feee7fcc74a9904352700704b1c8d2bd5
5
5
  SHA512:
6
- metadata.gz: 26124c87a8d13d71b0551d79d599eda734c656ad38576895adb59b36d1a093dc350a2a26287f373ecc3dd7782eee1ce4d78ef59a833ca791ce019c940d50e9da
7
- data.tar.gz: 02acf571115949f295ff1dd654549bfa8d296df0f6c39ea4ab4631e8b5e5416080381386c3e44891fa1a75d4ebe4e0ad47db367247d6044938a78d0ed221b110
6
+ metadata.gz: 7b8face2936949f9cf382336ef8e88da96ff848ea8f088f70eeedba7d6e76f923cb206b06b9cbb10b03ad28dda22cea70415d1686f662617a8175c9f6b7b2aa2
7
+ data.tar.gz: 7aa9af505594a1109b438c85a5196cfa5d46ac9591c53a4d3425790ed40d02f812c067a760d387b222bebbce8bae74585437d2a2e47cc8baa92e908d24c9aaee
@@ -18,7 +18,8 @@ module LogStasher
18
18
  REQUEST_CONTEXT_KEY = :logstasher_request_context
19
19
 
20
20
  attr_accessor :logger, :logger_path, :enabled, :log_controller_parameters, :source, :backtrace,
21
- :controller_monkey_patch, :field_renaming
21
+ :controller_monkey_patch, :field_renaming
22
+
22
23
  # Setting the default to 'unknown' to define the default behaviour
23
24
  @source = 'unknown'
24
25
  # By default log the backtrace of exceptions
@@ -27,27 +28,25 @@ module LogStasher
27
28
  def remove_existing_log_subscriptions
28
29
  ::ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
29
30
  case subscriber.class.name
30
- when 'ActionView::LogSubscriber'
31
- unsubscribe(:action_view, subscriber)
32
- when 'ActionController::LogSubscriber'
33
- unsubscribe(:action_controller, subscriber)
34
- when 'ActionMailer::LogSubscriber'
35
- unsubscribe(:action_mailer, subscriber)
36
- when 'ActiveRecord::LogSubscriber'
37
- unsubscribe(:active_record, subscriber)
38
- when 'ActiveJob::Logging::LogSubscriber'
39
- unsubscribe(:active_job, subscriber)
31
+ when 'ActionView::LogSubscriber'
32
+ unsubscribe(:action_view, subscriber)
33
+ when 'ActionController::LogSubscriber'
34
+ unsubscribe(:action_controller, subscriber)
35
+ when 'ActionMailer::LogSubscriber'
36
+ unsubscribe(:action_mailer, subscriber)
37
+ when 'ActiveRecord::LogSubscriber'
38
+ unsubscribe(:active_record, subscriber)
39
+ when 'ActiveJob::Logging::LogSubscriber'
40
+ unsubscribe(:active_job, subscriber)
40
41
  end
41
42
  end
42
43
  end
43
44
 
44
45
  def unsubscribe(component, subscriber)
45
- events = subscriber.public_methods(false).reject{ |method| method.to_s == 'call' }
46
+ events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
46
47
  events.each do |event|
47
48
  ::ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
48
- if listener.instance_variable_get('@delegate') == subscriber
49
- ::ActiveSupport::Notifications.unsubscribe listener
50
- end
49
+ ::ActiveSupport::Notifications.unsubscribe listener if listener.instance_variable_get('@delegate') == subscriber
51
50
  end
52
51
  end
53
52
  end
@@ -57,14 +56,14 @@ module LogStasher
57
56
  payload[:route] = "#{request.params[:controller]}##{request.params[:action]}"
58
57
  payload[:request_id] = request.env['action_dispatch.request_id']
59
58
  LogStasher::CustomFields.add(:ip, :route, :request_id)
60
- if self.log_controller_parameters
59
+ if log_controller_parameters
61
60
  payload[:parameters] = payload[:params].except(*::ActionController::LogSubscriber::INTERNAL_PARAMS)
62
61
  LogStasher::CustomFields.add(:parameters)
63
62
  end
64
63
  end
65
64
 
66
65
  def add_custom_fields(&block)
67
- wrapped_block = Proc.new do |fields|
66
+ wrapped_block = proc do |fields|
68
67
  LogStasher::CustomFields.add(*LogStasher.store.keys)
69
68
  instance_exec(fields, &block)
70
69
  end
@@ -73,7 +72,7 @@ module LogStasher
73
72
  end
74
73
 
75
74
  def add_custom_fields_to_request_context(&block)
76
- wrapped_block = Proc.new do |fields|
75
+ wrapped_block = proc do |fields|
77
76
  instance_exec(fields, &block)
78
77
  LogStasher::CustomFields.add(*fields.keys)
79
78
  end
@@ -101,27 +100,27 @@ module LogStasher
101
100
 
102
101
  def setup(config)
103
102
  # Path instrumentation class to insert our hook
104
- if (! config.controller_monkey_patch && config.controller_monkey_patch != false) || config.controller_monkey_patch == true
103
+ if (!config.controller_monkey_patch && config.controller_monkey_patch != false) || config.controller_monkey_patch == true
105
104
  require 'logstasher/rails_ext/action_controller/metal/instrumentation'
106
105
  end
107
- self.suppress_app_logs(config)
106
+ suppress_app_logs(config)
108
107
  self.logger_path = config.logger_path || "#{Rails.root}/log/logstash_#{Rails.env}.log"
109
- self.logger = config.logger || new_logger(self.logger_path)
110
- self.logger.level = config.log_level || Logger::WARN
108
+ self.logger = config.logger || new_logger(logger_path)
109
+ logger.level = config.log_level || Logger::WARN
111
110
  self.source = config.source unless config.source.nil?
112
- self.log_controller_parameters = !! config.log_controller_parameters
113
- self.backtrace = !! config.backtrace unless config.backtrace.nil?
114
- self.set_data_for_rake
115
- self.set_data_for_console
111
+ self.log_controller_parameters = !!config.log_controller_parameters
112
+ self.backtrace = !!config.backtrace unless config.backtrace.nil?
113
+ set_data_for_rake
114
+ set_data_for_console
116
115
  self.field_renaming = Hash(config.field_renaming)
117
116
  end
118
117
 
119
118
  def set_data_for_rake
120
- self.request_context['request_id'] = ::Rake.application.top_level_tasks if self.called_as_rake?
119
+ request_context['request_id'] = ::Rake.application.top_level_tasks if called_as_rake?
121
120
  end
122
121
 
123
122
  def set_data_for_console
124
- self.request_context['request_id'] = "#{Process.pid}" if self.called_as_console?
123
+ request_context['request_id'] = Process.pid.to_s if called_as_console?
125
124
  end
126
125
 
127
126
  def called_as_rake?
@@ -159,10 +158,10 @@ module LogStasher
159
158
  # LogStasher.info("message", tags:["tag1", "tag2"])
160
159
  # LogStasher.info("message", timing:1234)
161
160
  # LogStasher.info(custom1:"yes", custom2:"no")
162
- def log(severity, message, additional_fields={})
163
- if self.logger && self.logger.send("#{severity}?")
161
+ def log(severity, message, additional_fields = {})
162
+ if logger && logger.send("#{severity}?")
164
163
 
165
- data = {'level' => severity}
164
+ data = { 'level' => severity }
166
165
  if message.respond_to?(:to_hash)
167
166
  data.merge!(message.to_hash)
168
167
  else
@@ -173,16 +172,16 @@ module LogStasher
173
172
  tags = Array(additional_fields.delete(:tags) || 'log')
174
173
 
175
174
  data.merge!(additional_fields)
176
- self.logger << build_logstash_event(data, tags).to_json + "\n"
175
+ logger << build_logstash_event(data, tags).to_json + "\n"
177
176
 
178
177
  end
179
178
  end
180
179
 
181
180
  def build_logstash_event(data, tags)
182
181
  field_renaming.each do |old_name, new_name|
183
- data[new_name] = data.delete(old_name) if data.key?(old_name)
182
+ data[new_name] = data.delete(old_name) if data.key?(old_name)
184
183
  end
185
- Event.new(data.merge('source' => self.source, 'tags' => tags))
184
+ Event.new(data.merge('source' => source, 'tags' => tags))
186
185
  end
187
186
 
188
187
  def store
@@ -205,7 +204,7 @@ module LogStasher
205
204
  end
206
205
  end
207
206
 
208
- %w( fatal error warn info debug unknown ).each do |severity|
207
+ %w[fatal error warn info debug unknown].each do |severity|
209
208
  eval <<-EOM, nil, __FILE__, __LINE__ + 1
210
209
  def #{severity}(message=nil, additional_fields={})
211
210
  self.log(:#{severity}, message, additional_fields)
@@ -214,7 +213,7 @@ module LogStasher
214
213
  end
215
214
 
216
215
  def enabled?
217
- self.enabled || false
216
+ enabled || false
218
217
  end
219
218
 
220
219
  private
@@ -10,8 +10,8 @@ module LogStasher
10
10
  def render_template(event)
11
11
  logstash_event(event)
12
12
  end
13
- alias :render_partial :render_template
14
- alias :render_collection :render_template
13
+ alias render_partial render_template
14
+ alias render_collection render_template
15
15
 
16
16
  def logger
17
17
  LogStasher.logger
@@ -35,7 +35,7 @@ module LogStasher
35
35
  end
36
36
 
37
37
  def extract_data(data)
38
- { identifier: from_rails_root(data[:identifier]) }
38
+ { identifier: from_rails_root(data[:identifier]) }
39
39
  end
40
40
 
41
41
  def request_context
@@ -49,16 +49,15 @@ module LogStasher
49
49
  def event_data(event)
50
50
  {
51
51
  name: event.name,
52
- transaction_id: event.transaction_id,
52
+ transaction_id: event.transaction_id
53
53
  }
54
54
  end
55
55
 
56
56
  def runtimes(event)
57
57
  {
58
- duration: event.duration,
59
- }.inject({}) do |runtimes, (name, runtime)|
58
+ duration: event.duration
59
+ }.each_with_object({}) do |(name, runtime), runtimes|
60
60
  runtimes[name] = runtime.to_f.round(2) if runtime
61
- runtimes
62
61
  end
63
62
  end
64
63
  end
@@ -4,89 +4,89 @@ begin
4
4
  rescue LoadError
5
5
  end
6
6
 
7
- module LogStasher
8
- module ActiveJob
9
- class LogSubscriber < ::ActiveJob::Logging::LogSubscriber
10
-
11
- def enqueue(event)
12
- process_event(event, 'enqueue')
13
- end
14
-
15
- def enqueue_at(event)
16
- process_event(event, 'enqueue_at')
17
- end
18
-
19
- def perform(event)
20
- process_event(event, 'perform')
21
-
22
- # Revert the request id back, in the event that the inline adapter is being used or a
23
- # perform_now was used.
24
- LogStasher.request_context[:request_id] = Thread.current[:old_request_id]
25
- Thread.current[:old_request_id] = nil
26
- end
27
-
28
- def perform_start(event)
29
- # Use the job_id as the request id, so that any custom logging done for a job
30
- # shares a request id, and has the job id in each log line.
31
- #
32
- # It's not being set when the job is enqueued, so enqueuing a job will have it's default
33
- # request_id. In a lot of cases, it will be because of a web request.
34
- #
35
- # Hang onto the old request id, so we can revert after the job is done being performed.
36
- Thread.current[:old_request_id] = LogStasher.request_context[:request_id]
37
- LogStasher.request_context[:request_id] = event.payload[:job].job_id
38
-
39
- process_event(event, 'perform_start')
40
- end
41
-
42
- def logger
43
- LogStasher.logger
44
- end
45
-
46
- private
47
-
48
- def process_event(event, type)
49
- data = extract_metadata(event)
50
- data.merge! extract_exception(event)
51
- data.merge! extract_scheduled_at(event) if type == 'enqueue_at'
52
- data.merge! extract_duration(event) if type == 'perform'
53
- data.merge! request_context
54
-
55
- tags = ['job', type]
56
- tags.push('exception') if data[:exception]
57
- logger << LogStasher.build_logstash_event(data, tags).to_json + "\n"
7
+ if defined?(::ActiveJob::Logging::LogSubscriber)
8
+ module LogStasher
9
+ module ActiveJob
10
+ class LogSubscriber < ::ActiveJob::Logging::LogSubscriber
11
+ def enqueue(event)
12
+ process_event(event, 'enqueue')
13
+ end
14
+
15
+ def enqueue_at(event)
16
+ process_event(event, 'enqueue_at')
17
+ end
18
+
19
+ def perform(event)
20
+ process_event(event, 'perform')
21
+
22
+ # Revert the request id back, in the event that the inline adapter is being used or a
23
+ # perform_now was used.
24
+ LogStasher.request_context[:request_id] = Thread.current[:old_request_id]
25
+ Thread.current[:old_request_id] = nil
26
+ end
27
+
28
+ def perform_start(event)
29
+ # Use the job_id as the request id, so that any custom logging done for a job
30
+ # shares a request id, and has the job id in each log line.
31
+ #
32
+ # It's not being set when the job is enqueued, so enqueuing a job will have it's default
33
+ # request_id. In a lot of cases, it will be because of a web request.
34
+ #
35
+ # Hang onto the old request id, so we can revert after the job is done being performed.
36
+ Thread.current[:old_request_id] = LogStasher.request_context[:request_id]
37
+ LogStasher.request_context[:request_id] = event.payload[:job].job_id
38
+
39
+ process_event(event, 'perform_start')
40
+ end
41
+
42
+ def logger
43
+ LogStasher.logger
44
+ end
45
+
46
+ private
47
+
48
+ def process_event(event, type)
49
+ data = extract_metadata(event)
50
+ data.merge! extract_exception(event)
51
+ data.merge! extract_scheduled_at(event) if type == 'enqueue_at'
52
+ data.merge! extract_duration(event) if type == 'perform'
53
+ data.merge! request_context
54
+
55
+ tags = ['job', type]
56
+ tags.push('exception') if data[:exception]
57
+ logger << LogStasher.build_logstash_event(data, tags).to_json + "\n"
58
+ end
59
+
60
+ def extract_metadata(event)
61
+ {
62
+ job_id: event.payload[:job].job_id,
63
+ queue_name: queue_name(event),
64
+ job_class: event.payload[:job].class.to_s,
65
+ job_args: args_info(event.payload[:job])
66
+ }
67
+ end
68
+
69
+ def extract_duration(event)
70
+ { duration: event.duration.to_f.round(2) }
71
+ end
72
+
73
+ def extract_exception(event)
74
+ event.payload.slice(:exception)
75
+ end
76
+
77
+ def extract_scheduled_at(event)
78
+ { scheduled_at: scheduled_at(event) }
79
+ end
80
+
81
+ def request_context
82
+ LogStasher.request_context
83
+ end
84
+
85
+ # The default args_info makes a string. We need objects to turn into JSON.
86
+ def args_info(job)
87
+ job.arguments.map { |arg| arg.try(:to_global_id).try(:to_s) || arg }
88
+ end
58
89
  end
59
-
60
- def extract_metadata(event)
61
- {
62
- :job_id => event.payload[:job].job_id,
63
- :queue_name => queue_name(event),
64
- :job_class => event.payload[:job].class.to_s,
65
- :job_args => args_info(event.payload[:job]),
66
- }
67
- end
68
-
69
- def extract_duration(event)
70
- { :duration => event.duration.to_f.round(2) }
71
- end
72
-
73
- def extract_exception(event)
74
- event.payload.slice(:exception)
75
- end
76
-
77
- def extract_scheduled_at(event)
78
- { :scheduled_at => scheduled_at(event) }
79
- end
80
-
81
- def request_context
82
- LogStasher.request_context
83
- end
84
-
85
- # The default args_info makes a string. We need objects to turn into JSON.
86
- def args_info(job)
87
- job.arguments.map { |arg| arg.try(:to_global_id).try(:to_s) || arg }
88
- end
89
-
90
90
  end
91
91
  end
92
- end if defined?(::ActiveJob::Logging::LogSubscriber)
92
+ end
@@ -9,11 +9,9 @@ module LogStasher
9
9
 
10
10
  def identity(event)
11
11
  lsevent = logstash_event(event)
12
- if logger && lsevent
13
- logger << lsevent.to_json + "\n"
14
- end
12
+ logger << lsevent.to_json + "\n" if logger && lsevent
15
13
  end
16
- alias :sql :identity
14
+ alias sql identity
17
15
 
18
16
  def logger
19
17
  LogStasher.logger
@@ -22,6 +20,7 @@ module LogStasher
22
20
  private
23
21
 
24
22
  def logstash_event(event)
23
+ self.class.runtime += event.duration
25
24
  data = event.payload
26
25
 
27
26
  return if 'SCHEMA' == data[:name]
@@ -32,7 +31,7 @@ module LogStasher
32
31
  data.merge! LogStasher.store
33
32
  data.merge! extract_custom_fields(data)
34
33
 
35
- tags = [ 'request' ]
34
+ tags = ['request']
36
35
  tags.push('exception') if data[:exception]
37
36
  LogStasher.build_logstash_event(data, tags)
38
37
  end
@@ -45,7 +44,7 @@ module LogStasher
45
44
  if event.duration
46
45
  { duration: event.duration.to_f.round(2) }
47
46
  else
48
- { }
47
+ {}
49
48
  end
50
49
  end
51
50
 
@@ -44,7 +44,7 @@ module LogStasher
44
44
  end
45
45
 
46
46
  def extract_path(payload)
47
- payload[:path].split("?").first
47
+ payload[:path].split('?').first
48
48
  end
49
49
 
50
50
  def extract_format(payload)
@@ -57,27 +57,26 @@ module LogStasher
57
57
 
58
58
  def extract_status(payload)
59
59
  if payload[:status]
60
- { :status => payload[:status].to_i }
60
+ { status: payload[:status].to_i }
61
61
  else
62
- { :status => 0 }
62
+ { status: 0 }
63
63
  end
64
64
  end
65
65
 
66
66
  def runtimes(event)
67
67
  {
68
- :duration => event.duration,
69
- :view => event.payload[:view_runtime],
70
- :db => event.payload[:db_runtime]
71
- }.inject({}) do |runtimes, (name, runtime)|
68
+ duration: event.duration,
69
+ view: event.payload[:view_runtime],
70
+ db: event.payload[:db_runtime]
71
+ }.each_with_object({}) do |(name, runtime), runtimes|
72
72
  runtimes[name] = runtime.to_f.round(2) if runtime
73
- runtimes
74
73
  end
75
74
  end
76
75
 
77
- def location(event)
76
+ def location(_event)
78
77
  if location = Thread.current[:logstasher_location]
79
78
  Thread.current[:logstasher_location] = nil
80
- { :location => location }
79
+ { location: location }
81
80
  else
82
81
  {}
83
82
  end
@@ -88,13 +87,13 @@ module LogStasher
88
87
  if payload[:exception]
89
88
  exception, message = payload[:exception]
90
89
  status = ::ActionDispatch::ExceptionWrapper.status_code_for_exception(exception)
91
- if LogStasher.backtrace
92
- backtrace = $!.backtrace.join("\n")
93
- else
94
- backtrace = $!.backtrace.first
95
- end
90
+ backtrace = if LogStasher.backtrace
91
+ $!.backtrace.join("\n")
92
+ else
93
+ $!.backtrace.first
94
+ end
96
95
  message = "#{exception}\n#{message}\n#{backtrace}"
97
- { :status => status, :error => message }
96
+ { status: status, error: message }
98
97
  else
99
98
  {}
100
99
  end
@@ -4,18 +4,18 @@ require 'active_support/log_subscriber'
4
4
  module LogStasher
5
5
  module ActiveSupport
6
6
  class MailerLogSubscriber < ::ActiveSupport::LogSubscriber
7
- MAILER_FIELDS = [:mailer, :action, :message_id, :from, :to]
7
+ MAILER_FIELDS = %i[mailer action message_id from to].freeze
8
8
 
9
9
  def deliver(event)
10
- process_event(event, ['mailer', 'deliver'])
10
+ process_event(event, %w[mailer deliver])
11
11
  end
12
12
 
13
13
  def receive(event)
14
- process_event(event, ['mailer', 'receive'])
14
+ process_event(event, %w[mailer receive])
15
15
  end
16
16
 
17
17
  def process(event)
18
- process_event(event, ['mailer', 'process'])
18
+ process_event(event, %w[mailer process])
19
19
  end
20
20
 
21
21
  def logger
@@ -5,7 +5,7 @@ module LogStasher
5
5
  (!CustomFields.custom_fields.empty? && data.extract!(*CustomFields.custom_fields)) || {}
6
6
  end
7
7
  end
8
-
8
+
9
9
  def self.clear
10
10
  Thread.current[:logstasher_custom_fields] = []
11
11
  end
@@ -3,7 +3,6 @@ require 'redis'
3
3
  module LogStasher
4
4
  module Device
5
5
  class Redis
6
-
7
6
  attr_reader :options, :redis
8
7
 
9
8
  def initialize(options = {})
@@ -23,7 +22,7 @@ module LogStasher
23
22
  def redis_options
24
23
  unless @redis_options
25
24
  default_keys = default_options.keys
26
- @redis_options = options.select { |k, v| !default_keys.include?(k) }
25
+ @redis_options = options.select { |k, _v| !default_keys.include?(k) }
27
26
  end
28
27
 
29
28
  @redis_options
@@ -36,7 +35,7 @@ module LogStasher
36
35
  when 'channel'
37
36
  redis.publish(key, log)
38
37
  else
39
- fail "Unknown data type #{data_type}"
38
+ raise "Unknown data type #{data_type}"
40
39
  end
41
40
  end
42
41
 
@@ -51,12 +50,12 @@ module LogStasher
51
50
  end
52
51
 
53
52
  def default_options
54
- { key: 'logstash', data_type: 'list' }
53
+ { key: 'logstash', data_type: 'list' }
55
54
  end
56
55
 
57
56
  def validate_options
58
- unless ['list', 'channel'].include?(options[:data_type])
59
- fail 'Expected :data_type to be either "list" or "channel"'
57
+ unless %w[list channel].include?(options[:data_type])
58
+ raise 'Expected :data_type to be either "list" or "channel"'
60
59
  end
61
60
  end
62
61
  end
@@ -1,31 +1,28 @@
1
- require "json"
2
- require "time"
3
- require "date"
1
+ require 'json'
2
+ require 'time'
3
+ require 'date'
4
4
 
5
5
  module LogStasher
6
6
  class Event
7
-
8
- def initialize(data={})
7
+ def initialize(data = {})
9
8
  @cancelled = false
10
9
 
11
10
  @data = data
12
- if data.include?("@timestamp")
13
- t = data["@timestamp"]
14
- if t.is_a?(String)
15
- data["@timestamp"] = Time.parse(t).gmtime
16
- end
11
+ if data.include?('@timestamp')
12
+ t = data['@timestamp']
13
+ data['@timestamp'] = Time.parse(t).gmtime.iso8601(3) if t.is_a?(String)
17
14
  else
18
- data["@timestamp"] = ::Time.now.utc
15
+ data['@timestamp'] = ::Time.now.utc.iso8601(3)
19
16
  end
20
- data["@version"] = "1" if !@data.include?("@version")
21
- end
17
+ data['@version'] = '1' unless @data.include?('@version')
18
+ end
22
19
 
23
20
  def to_s
24
21
  to_json.to_s
25
22
  end
26
-
23
+
27
24
  def to_json(*args)
28
- return @data.to_json(*args)
25
+ @data.to_json(*args)
29
26
  end
30
27
 
31
28
  def [](key)
@@ -9,17 +9,17 @@ module LogStasher
9
9
  super(*args)
10
10
  LogStasher::CustomFields.clear
11
11
  end
12
-
12
+
13
13
  private
14
14
 
15
15
  # this method is called from within super of process_action.
16
16
  def append_info_to_payload(payload) #:nodoc:
17
17
  LogStasher.add_default_fields_to_payload(payload, request)
18
- if self.respond_to?(:logstasher_add_custom_fields_to_request_context)
18
+ if respond_to?(:logstasher_add_custom_fields_to_request_context)
19
19
  logstasher_add_custom_fields_to_request_context(LogStasher.request_context)
20
20
  end
21
21
 
22
- if self.respond_to?(:logstasher_add_custom_fields_to_payload)
22
+ if respond_to?(:logstasher_add_custom_fields_to_payload)
23
23
  before_keys = payload.keys.clone
24
24
  logstasher_add_custom_fields_to_payload(payload)
25
25
  after_keys = payload.keys
@@ -38,7 +38,7 @@ module LogStasher
38
38
  payload[key] = value
39
39
  end
40
40
  end
41
-
41
+
42
42
  def add_custom_fields_to_store
43
43
  LogStasher.store[:ip] = request.remote_ip
44
44
  LogStasher.store[:route] = "#{request.params[:controller]}##{request.params[:action]}"
@@ -1,14 +1,18 @@
1
1
  module ActionController
2
2
  module Instrumentation
3
- alias :orig_process_action :process_action
3
+ alias orig_process_action process_action
4
4
  def process_action(*args)
5
5
  raw_payload = {
6
- :controller => self.class.name,
7
- :action => self.action_name,
8
- :params => request.filtered_parameters,
9
- :format => request.format.try(:ref),
10
- :method => request.method,
11
- :path => (request.fullpath rescue "unknown")
6
+ controller: self.class.name,
7
+ action: action_name,
8
+ params: request.filtered_parameters,
9
+ format: request.format.try(:ref),
10
+ method: request.method,
11
+ path: begin
12
+ request.fullpath
13
+ rescue StandardError
14
+ 'unknown'
15
+ end
12
16
  }
13
17
 
14
18
  LogStasher.add_default_fields_to_payload(raw_payload, request)
@@ -16,14 +20,14 @@ module ActionController
16
20
  LogStasher.clear_request_context
17
21
  LogStasher.add_default_fields_to_request_context(request)
18
22
 
19
- ActiveSupport::Notifications.instrument("start_processing.action_controller", raw_payload.dup)
23
+ ActiveSupport::Notifications.instrument('start_processing.action_controller', raw_payload.dup)
20
24
 
21
- ActiveSupport::Notifications.instrument("process_action.action_controller", raw_payload) do |payload|
22
- if self.respond_to?(:logstasher_add_custom_fields_to_request_context)
25
+ ActiveSupport::Notifications.instrument('process_action.action_controller', raw_payload) do |payload|
26
+ if respond_to?(:logstasher_add_custom_fields_to_request_context)
23
27
  logstasher_add_custom_fields_to_request_context(LogStasher.request_context)
24
28
  end
25
29
 
26
- if self.respond_to?(:logstasher_add_custom_fields_to_payload)
30
+ if respond_to?(:logstasher_add_custom_fields_to_payload)
27
31
  before_keys = raw_payload.keys.clone
28
32
  logstasher_add_custom_fields_to_payload(raw_payload)
29
33
  after_keys = raw_payload.keys
@@ -45,6 +49,6 @@ module ActionController
45
49
  result
46
50
  end
47
51
  end
48
- alias :logstasher_process_action :process_action
52
+ alias logstasher_process_action process_action
49
53
  end
50
54
  end
@@ -17,8 +17,7 @@ module Rails
17
17
  end
18
18
 
19
19
  # Overwrites Rails 3.0/3.1 code that logs new requests
20
- def before_dispatch(env)
21
- end
20
+ def before_dispatch(env); end
22
21
  end
23
22
  end
24
23
  end
@@ -17,12 +17,12 @@ module LogStasher
17
17
 
18
18
  # Try loading the config/logstasher.yml if present
19
19
  env = Rails.env.to_sym || :development
20
- config_file = File.expand_path "./config/logstasher.yml"
20
+ config_file = File.expand_path './config/logstasher.yml'
21
21
 
22
22
  # Load and ERB templating of YAML files
23
- LOGSTASHER = File.exists?(config_file) ? YAML.load(ERB.new(File.read(config_file)).result).symbolize_keys : nil
23
+ LOGSTASHER = File.exist?(config_file) ? YAML.load(ERB.new(File.read(config_file)).result).symbolize_keys : nil
24
24
 
25
- initializer :logstasher, :before => :load_config_initializers do |app|
25
+ initializer :logstasher, before: :load_config_initializers do |app|
26
26
  if LOGSTASHER.present?
27
27
  # process common configs
28
28
  LogStasher.process_config(app.config.logstasher, LOGSTASHER)
@@ -79,6 +79,8 @@ module LogStasher
79
79
  config.backtrace = yml_config[:backtrace] if yml_config.key? :backtrace
80
80
  config.logger_path = yml_config[:logger_path] if yml_config.key? :logger_path
81
81
  config.log_level = yml_config[:log_level] if yml_config.key? :log_level
82
- config.log_controller_parameters = yml_config[:log_controller_parameters] if yml_config.key? :log_controller_parameters
82
+ if yml_config.key? :log_controller_parameters
83
+ config.log_controller_parameters = yml_config[:log_controller_parameters]
84
+ end
83
85
  end
84
86
  end
@@ -1,3 +1,3 @@
1
1
  module LogStasher
2
- VERSION = "1.4.0"
2
+ VERSION = '2.0.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstasher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shadab Ahmed
@@ -11,61 +11,61 @@ cert_chain: []
11
11
  date: 2020-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: logstash-event
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2.0
19
+ version: '5.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2.0
26
+ version: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: request_store
28
+ name: logstash-event
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 1.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 1.2.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: activesupport
42
+ name: request_store
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '4.0'
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '4.0'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec
56
+ name: activerecord
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '2.14'
61
+ version: '5.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '2.14'
68
+ version: '5.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -86,28 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '4.0'
89
+ version: '5.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '4.0'
96
+ version: '5.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: activerecord
98
+ name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '4.0'
103
+ version: '2.14'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '4.0'
110
+ version: '2.14'
111
111
  description: Awesome rails logs
112
112
  email:
113
113
  - shadab.ansari@gmail.com