diff --git a/src/java/com/android/ims/MmTelFeatureConnection.java b/src/java/com/android/ims/MmTelFeatureConnection.java
index 50dc91e..1709dcb 100644
--- a/src/java/com/android/ims/MmTelFeatureConnection.java
+++ b/src/java/com/android/ims/MmTelFeatureConnection.java
@@ -556,8 +556,9 @@
         public void imsStatusChanged(int slotId, int feature, int status) {
             mExecutor.execute(() -> {
                 synchronized (mLock) {
-                    Log.i(TAG, "imsStatusChanged: slot: " + slotId + " feature: " + feature +
-                            " status: " + status);
+                    Log.i(TAG, "imsStatusChanged: slot: " + slotId + " feature: "
+                            + ImsFeature.FEATURE_LOG_MAP.get(feature) +
+                            " status: " + ImsFeature.STATE_LOG_MAP.get(status));
                     if (mSlotId == slotId && feature == ImsFeature.FEATURE_MMTEL) {
                         mFeatureStateCached = status;
                         if (mStatusCallback != null) {
@@ -900,16 +901,16 @@
             }
         }
         // Don't synchronize on Binder call.
-        Integer status = retrieveFeatureState();
+        Integer state = retrieveFeatureState();
         synchronized (mLock) {
-            if (status == null) {
+            if (state == null) {
                 return ImsFeature.STATE_UNAVAILABLE;
             }
             // Cache only non-null value for feature status.
-            mFeatureStateCached = status;
+            mFeatureStateCached = state;
         }
-        Log.i(TAG, "getFeatureState - returning " + status);
-        return status;
+        Log.i(TAG, "getFeatureState - returning " + ImsFeature.STATE_LOG_MAP.get(state));
+        return state;
     }
 
     /**
