Class: ActionController::LogSubscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb,
lib/rails_semantic_logger/extensions/action_controller/log_subscriber_processing.rb

Instance Method Summary collapse

Instance Method Details

#halted_callback(event) ⇒ Object



37
38
39
# File 'lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb', line 37

def halted_callback(event)
  controller_logger(event).info { "Filter chain halted as #{event.payload[:filter].inspect} rendered or redirected" }
end

#process_action(event) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb', line 10

def process_action(event)
  controller_logger(event).info do
    payload = event.payload.dup
    payload[:params].except!(*INTERNAL_PARAMS)
    payload.delete(:params) if payload[:params].empty?

    format           = payload[:format]
    payload[:format] = format.to_s.upcase if format.is_a?(Symbol)

    exception = payload.delete(:exception)
    if payload[:status].nil? && exception.present?
      exception_class_name = exception.first
      payload[:status]     = ActionDispatch::ExceptionWrapper.status_code_for_exception(exception_class_name)
    end

    # Rounds off the runtimes. For example, :view_runtime, :mongo_runtime, etc.
    payload.keys.each do |key|
      payload[key] = payload[key].to_f.round(2) if key.to_s.match(/(.*)_runtime/)
    end

    payload[:message]        = "Completed ##{payload[:action]}"
    payload[:status_message] = Rack::Utils::HTTP_STATUS_CODES[payload[:status]] if payload[:status].present?
    payload[:duration]       = event.duration
    payload
  end
end

#redirect_to(event) ⇒ Object



45
46
47
# File 'lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb', line 45

def redirect_to(event)
  controller_logger(event).info('Redirected to') { {location: event.payload[:location]} }
end

#send_data(event) ⇒ Object



49
50
51
# File 'lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb', line 49

def send_data(event)
  controller_logger(event).info('Sent data') { {file_name: event.payload[:filename], duration: event.duration} }
end

#send_file(event) ⇒ Object



41
42
43
# File 'lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb', line 41

def send_file(event)
  controller_logger(event).info('Sent file') { {path: event.payload[:path], duration: event.duration} }
end

#start_processing(event) ⇒ Object

Log as info to show Processing messages in production



6
7
8
# File 'lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb', line 6

def start_processing(event)
  controller_logger(event).debug { "Processing ##{event.payload[:action]}" }
end

#unpermitted_parameters(event) ⇒ Object



53
54
55
56
57
58
# File 'lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb', line 53

def unpermitted_parameters(event)
  controller_logger(event).debug do
    unpermitted_keys = event.payload[:keys]
    "Unpermitted parameter#{'s' if unpermitted_keys.size > 1}: #{unpermitted_keys.join(", ")}"
  end
end