Module: GrpcInterceptors::Common::Logger
- Defined in:
- lib/grpc_interceptors/common/log_payload.rb
Class Method Summary collapse
- .build_payload(method, method_type, kind) ⇒ Object
-
.log(logger: nil, request: nil, method: nil, method_type: nil, kind: nil) ⇒ Object
Log a gRPC interaction from the client side.
Class Method Details
.build_payload(method, method_type, kind) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/grpc_interceptors/common/log_payload.rb', line 48 def self.build_payload(method, method_type, kind) service = GrpcHelper.service_name(method) method = GrpcHelper.method_name(method) payload = { 'pid' => Process.pid, 'grpc.component' => kind, # the caller, server or client 'grpc.service' => service, 'grpc.method' => method, 'grpc.method_type' => method_type } if defined?(OpenTelemetry) && OpenTelemetry::Trace.current_span.recording? tracing_context = OpenTelemetry::Trace.current_span.context payload['span_id'] = tracing_context.hex_span_id payload['trace_id'] = tracing_context.hex_trace_id end payload end |
.log(logger: nil, request: nil, method: nil, method_type: nil, kind: nil) ⇒ Object
Log a gRPC interaction from the client side.
If the current log level is INFO, then it logs out basic facts. If the current log level is DEBUG, then it additionally adds to the log request and response. If the server responds with error, then the error is added to the log.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/grpc_interceptors/common/log_payload.rb', line 17 def self.log( logger: nil, request: nil, method: nil, method_type: nil, kind: nil ) payload = build_payload(method, method_type, kind) if block_given? grpc_code = ::GRPC::Core::StatusCodes::OK begin response = yield rescue StandardError => e grpc_code = e.is_a?(::GRPC::BadStatus) ? e.code : ::GRPC::Core::StatusCodes::UNKNOWN payload['error'] = e.class.to_s payload['error_message'] = e. payload['backtrace'] = e.backtrace raise end end ensure payload['grpc_code'] = grpc_code unless grpc_code.nil? if logger.level == Logger::Severity::INFO logger.info(payload) elsif logger.level == Logger::Severity::DEBUG payload['request'] = Common::GrpcHelper.proto_to_h(request) unless request.nil? payload['response'] = Common::GrpcHelper.proto_to_h(response) unless response.nil? logger.debug(payload) end end |