class RailsGrpc::Interceptor::LoggingInterceptor

Public Class Methods

new(logger) click to toggle source
# File lib/rails_grpc/interceptor/logging_interceptor.rb, line 6
def initialize(logger)
  @logger = logger
end

Public Instance Methods

request_response(request: nil, call: nil, method: nil) { || ... } click to toggle source
# File lib/rails_grpc/interceptor/logging_interceptor.rb, line 10
def request_response(request: nil, call: nil, method: nil)
  grpc_method = "#{method.owner.name}##{method.name}"
  logger = @logger
  logger.info("[GRPC] #{grpc_method}")
  t = Time.now

  begin
    yield
  rescue => e
    logger.error(e)
    logger.error(e.backtrace.join("\n"))
    raise e
  end

  t = Time.now - t
  display_duration = "%.1f ms" % (t * 1000.0)
  logger.info("[GRPC response] (#{display_duration}) #{grpc_method}")
end