class RailsTwirp::LogSubscriber
Public Instance Methods
process_action(event)
click to toggle source
# File lib/rails_twirp/log_subscriber.rb, line 13 def process_action(event) payload = event.payload exception_raised(payload[:http_request], payload[:exception_object]) if payload[:exception_object] info do code = payload.fetch(:code, :internal) message = +"Completed #{code} in #{event.duration.round}ms (Allocations: #{event.allocations})" message << "\n\n" if defined?(Rails.env) && Rails.env.development? message end end
start_processing(event)
click to toggle source
# File lib/rails_twirp/log_subscriber.rb, line 5 def start_processing(event) return unless logger.info? payload = event.payload info "Processing by #{payload[:controller]}##{payload[:action]}" end
Private Instance Methods
exception_raised(request, exception)
click to toggle source
# File lib/rails_twirp/log_subscriber.rb, line 29 def exception_raised(request, exception) backtrace_cleaner = request.get_header("action_dispatch.backtrace_cleaner") wrapper = ActionDispatch::ExceptionWrapper.new(backtrace_cleaner, exception) log_error(wrapper) end
log_array(array)
click to toggle source
# File lib/rails_twirp/log_subscriber.rb, line 50 def log_array(array) lines = Array(array) return if lines.empty? if logger.formatter&.respond_to?(:tags_text) fatal { lines.join("\n#{logger.formatter.tags_text}") } else fatal { lines.join("\n") } end end
log_error(wrapper)
click to toggle source
# File lib/rails_twirp/log_subscriber.rb, line 36 def log_error(wrapper) exception = wrapper.exception trace = wrapper.exception_trace message = [] message << " " message << "#{exception.class} (#{exception.message}):" message.concat(exception.annotated_source_code) if exception.respond_to?(:annotated_source_code) message << " " message.concat(trace) log_array(message) end