diff --git a/services/identity/internal/blesser/oauth.go b/services/identity/internal/blesser/oauth.go
index 3773467..079967e 100644
--- a/services/identity/internal/blesser/oauth.go
+++ b/services/identity/internal/blesser/oauth.go
@@ -9,8 +9,6 @@
 	"strings"
 	"time"
 
-	"v.io/x/lib/vlog"
-
 	"v.io/x/ref/services/identity"
 	"v.io/x/ref/services/identity/internal/oauth"
 	"v.io/x/ref/services/identity/internal/revocation"
@@ -61,20 +59,8 @@
 }
 
 func (b *oauthBlesser) BlessUsingAccessToken(ctx *context.T, call rpc.ServerCall, accessToken string) (security.Blessings, string, error) {
-	// Temporary logging to help debug https://github.com/vanadium/browser/issues/84
-	// TODO(ashankar): Remove before release!
-	startBless := time.Now()
-	defer func() {
-		if elapsed := time.Since(startBless); elapsed > 10*time.Second {
-			vlog.Infof("BlessUsingAccessToken took %v for endpoints (%v, %v), PublicKey: %v", elapsed, call.RemoteEndpoint(), call.LocalEndpoint(), call.Security().RemoteBlessings().PublicKey())
-		}
-	}()
 	var noblessings security.Blessings
-	start := time.Now()
 	email, clientName, err := b.oauthProvider.GetEmailAndClientName(accessToken, b.accessTokenClients)
-	if elapsed := time.Since(start); elapsed > 10*time.Second {
-		vlog.Infof("b.oauthProvider took %v and returned %v for endpoints (%v, %v) PublicKey: %v", elapsed, err, call.RemoteEndpoint(), call.LocalEndpoint(), call.Security().RemoteBlessings().PublicKey())
-	}
 	if err != nil {
 		return noblessings, "", err
 	}
@@ -90,11 +76,7 @@
 	var caveat security.Caveat
 	var err error
 	if b.revocationManager != nil {
-		start := time.Now()
 		caveat, err = b.revocationManager.NewCaveat(self.PublicKey(), b.dischargerLocation)
-		if elapsed := time.Since(start); elapsed > 10*time.Second {
-			vlog.Infof("revocationMgr.NewCaveat took %v and returned %v for endpoints (%v, %v) PublicKey: %v", elapsed, err, call.RemoteEndpoint(), call.LocalEndpoint(), call.RemoteBlessings().PublicKey())
-		}
 	} else {
 		caveat, err = security.NewExpiryCaveat(time.Now().Add(b.duration))
 	}
diff --git a/services/identity/internal/revocation/revocation_manager.go b/services/identity/internal/revocation/revocation_manager.go
index 495fb5d..47124ae 100644
--- a/services/identity/internal/revocation/revocation_manager.go
+++ b/services/identity/internal/revocation/revocation_manager.go
@@ -14,6 +14,7 @@
 
 	"v.io/v23/context"
 	"v.io/v23/security"
+	"v.io/x/lib/vlog"
 )
 
 // RevocationManager persists information for revocation caveats to provided discharges and allow for future revocations.
@@ -62,7 +63,10 @@
 	if err != nil {
 		return empty, err
 	}
+	vlog.Infof("revocationDB.InsertCaveat(%s,%v) called", cav.ThirdPartyDetails().ID(), revocation)
 	if err = revocationDB.InsertCaveat(cav.ThirdPartyDetails().ID(), revocation[:]); err != nil {
+		// TODO(suharshs): Remove this log.
+		vlog.Infof("revocationDB.InsertCaveat(%s,%v) failed with %v", cav.ThirdPartyDetails().ID(), revocation, err)
 		return empty, err
 	}
 	return cav, nil
