LoginSignup
1
0

More than 5 years have passed since last update.

gRPC-SwiftでgRPCのデバッグ情報を出力する

Posted at

現状gRPC-swiftは以下図のようにgRPC-C-Coreをラップして実装されています。
そして、C-Coreベースの実装で設定可能な環境変数がこちらで公開されています。
スクリーンショット 2018-08-29 19.30.02.png

中でもGRPC_TRACEGRPC_VERBOSITYはデバッグに便利で、
GRPC_TRACEallを指定するとapiコールからchannelの動作まで全てトレースします。
GRPC_VERBOSITYDEBUGを指定するとトレース結果を全て標準出力に出力します。

エラーだけを出力したければGRPC_VERBOSITY="DEBUG"でOKです。
また、-pending_tags-で指定するとトレース対象から除外されます。

$ export GRPC_TRACE=all,-pending_tags
$ export GRPC_VERBOSITY="DEBUG"

以下はログの一部抜粋ですがkeepalive_time_msが5000に設定されている事がログから分かりますね。


I0829 19:52:25.917127000 123145385742336 handshaker.cc:211]  
handshake_manager 0x7f8d5140dee0: error="No Error" 
shutdown=0 index=0, args={endpoint=0x7f8d5140c7b0, 
args=0x6000000035d0 {size=7: grpc.keepalive_time_ms=5000, grpc.keepalive_permit_without_calls=1, 
grpc.http2.max_pings_without_data=0, grpc.client_channel_factory=0x10f8a0ac8, grpc.server_uri=dns:///127.0.0.1:50051,
grpc.default_authority=127.0.0.1:50051, grpc.subchannel_address=ipv4:127.0.0.1:50158}, read_buffer=0x7f8d515005c0 (length=0), exit_early=0}

Xcode上で設定したいときは、Product>Scheme>Edit Scheme>ArgumentsEnvironment Variablesから渡してあげればOKです。

スクリーンショット 2018-08-29 19.48.51.png

Core部分をネイティブ実装しているGoやJavaでは使えないと思うのでご注意を。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0