gRPC-Swift로 gRPC 디버그 정보 출력

2954 단어 debuggrpc-swiftgRPC
현재 상태 gRPC-swift는 아래 그림과 같이 gRPC-C-Core를 래핑하여 구현됩니다.
그리고, C-Core 베이스의 구현으로 설정 가능한 환경 변수가 여기 로 공개되고 있습니다.


그 중에서도 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


Core 부분을 네이티브 구현하고 있는 Go나 Java에서는 사용할 수 없다고 생각하므로 주의를.

좋은 웹페이지 즐겨찾기