diff --git a/etcdserver/cluster.go b/etcdserver/cluster.go
index <HASH>..<HASH> 100644
--- a/etcdserver/cluster.go
+++ b/etcdserver/cluster.go
@@ -223,6 +223,13 @@ func (c *cluster) Recover() {
 	c.members, c.removed = membersFromStore(c.store)
 	c.version = clusterVersionFromStore(c.store)
 	MustDetectDowngrade(c.version)
+
+	for _, m := range c.members {
+		plog.Infof("added member %s %v to cluster %s from store", m.ID, m.PeerURLs, c.id)
+	}
+	if c.version != nil {
+		plog.Infof("set the cluster version to %v from store", version.Cluster(c.version.String()))
+	}
 }
 
 // ValidateConfigurationChange takes a proposed ConfChange and
diff --git a/etcdserver/server.go b/etcdserver/server.go
index <HASH>..<HASH> 100644
--- a/etcdserver/server.go
+++ b/etcdserver/server.go
@@ -292,9 +292,6 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
 			plog.Infof("recovered store from snapshot at index %d", snapshot.Metadata.Index)
 		}
 		cfg.Print()
-		if snapshot != nil {
-			plog.Infof("loaded cluster information from store: %s", cl)
-		}
 		if !cfg.ForceNewCluster {
 			id, cl, n, s, w = restartNode(cfg, snapshot)
 		} else {
etcdserver: print out correct restored cluster info

Before this PR, it always prints nil because cluster info has not been
covered when print:

```
<I>-<I>-<I> <I>:<I>:<I> I | etcdserver: loaded cluster information
from store: <nil>
```