func logGreeterError()

in grpc-xds/greeter-go/pkg/greeter/intermediary.go [63:83]


func logGreeterError(logger logr.Logger, err error, message string, keysAndValues ...interface{}) {
	s, ok := status.FromError(err)
	if !ok {
		logger.Error(err, message, keysAndValues...)
		return
	}
	keysAndValues = append(keysAndValues, "code", s.Code().String(), "message", s.Message())
	for _, detail := range s.Details() {
		if message, ok := detail.(proto.Message); ok {
			messageJSONBytes, err := protojson.Marshal(message)
			if err != nil {
				logger.Error(err, "Could not marshal status detail to JSON")
			} else {
				// Log error detail if we can marshal it to JSON
				key := string(message.ProtoReflect().Descriptor().Name())
				keysAndValues = append(keysAndValues, key, string(messageJSONBytes))
			}
		}
	}
	logger.Error(err, message, keysAndValues...)
}