loggingStreamInterceptor logs stream RPC calls.
(logger *zap.Logger)
| 48 | |
| 49 | // loggingStreamInterceptor logs stream RPC calls. |
| 50 | func loggingStreamInterceptor(logger *zap.Logger) grpc.StreamServerInterceptor { |
| 51 | return func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error { |
| 52 | start := time.Now() |
| 53 | err := handler(srv, ss) |
| 54 | duration := time.Since(start) |
| 55 | |
| 56 | if err != nil { |
| 57 | logger.Warn(i18n.T("server.middleware.stream_call"), |
| 58 | zap.String("method", info.FullMethod), |
| 59 | zap.Duration("duration", duration), |
| 60 | zap.Error(err), |
| 61 | ) |
| 62 | } else { |
| 63 | logger.Info(i18n.T("server.middleware.stream_call"), |
| 64 | zap.String("method", info.FullMethod), |
| 65 | zap.Duration("duration", duration), |
| 66 | ) |
| 67 | } |
| 68 | |
| 69 | return err |
| 70 | } |
| 71 | } |
| 72 | |
| 73 | // isDebugMode returns true when detailed error info should be logged. |
| 74 | func isDebugMode() bool { |