GrpcAccessLoggingInterceptor

An interceptor for access logging with gRPC.

Installation

Add this line to your application’s Gemfile:

“by gem ‘grpc_access_logging_interceptor’

And then execute:

$ bundle

Or install it yourself as:

$ gem install grpc_access_logging_interceptor

Usage

Please set a GrpcAccessLoggingInterceptor as an interceptor of your gRPC application.

“by require ‘grpc’ require ‘grpc_access_logging_interceptor’

server = GRPC::RpcServer.new( interceptors: [GrpcAccessLoggingInterceptor.new,] ) server.handle(MyHandler.new) server.run_till_terminated_or_interrupted([SIGINT])

With this setting, the following access logs will be printed.

“nsole I, [2019-03-15T00:00:00.000000 #30034] INFO – : 00:00:00.000000”,“params”:“{"value":"World"”,“user_agent”:“grpc-node/1.19.0 grpc-c/7.0.0 (linux; chttp2; gold)”,“grpc_method”:“/test.Test/HelloRpc”,“grpc_metadata”:“grpc-c/7.0.0 (linux; chttp2; gold)"”,“grpc_status_code”:0,“response_time_ms”:0.0}

The information in the access log

You can get information for the following fields.

Field NameMeaning
accessed_atThe time that the request was received
grpc_metadatagRPC’s metadata
grpc_methodA path string (cf. gRPC over HTTP2)
grpc_status_codeStatus codes in gRPC
paramsRequest parameter in JSON
remote_addrIP address of a client (e.g. "127.0.0.1")
response_time_msResponse time (ms)
user_agentUser agent (e.g. "grpc_health_probe grpc-go/1.17.0")

Custom Logger

You can use your custom logger.

“by server = GRPC::RpcServer.new( interceptors: [GrpcAccessLoggingInterceptor.new(logger: YourCustomLogger.new),] )

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bundle exec rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/wantedly/grpc_access_logging_interceptor.

License

The gem is available as open source under the terms of the MIT License.