diff --git a/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcChannelControllerImpl.java b/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcChannelControllerImpl.java
index 87c9426..96a1671 100644
--- a/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcChannelControllerImpl.java
+++ b/protocols/grpc/ctl/src/main/java/org/onosproject/grpc/ctl/GrpcChannelControllerImpl.java
@@ -92,9 +92,7 @@
             enableMessageLog.set(Tools.isPropertyEnabled(
                     properties, ENABLE_MESSAGE_LOG, ENABLE_MESSAGE_LOG_DEFAULT));
             log.info("Configured. Logging of gRPC messages is {}",
-                     enableMessageLog.get()
-                             ? "ENABLED for new channels"
-                             : "DISABLED for new and existing channels");
+                     enableMessageLog.get() ? "ENABLED" : "DISABLED");
         }
     }
 
@@ -125,28 +123,23 @@
                         "A channel with ID '%s' already exists", channelId));
             }
 
-            GrpcLoggingInterceptor interceptor = null;
-            if (enableMessageLog.get()) {
-                interceptor = new GrpcLoggingInterceptor(channelId, enableMessageLog);
-                channelBuilder.intercept(interceptor);
-            }
+            final GrpcLoggingInterceptor interceptor = new GrpcLoggingInterceptor(
+                    channelId, enableMessageLog);
+            channelBuilder.intercept(interceptor);
+
             ManagedChannel channel = channelBuilder.build();
             // Forced connection API is still experimental. Use workaround...
             // channel.getState(true);
             try {
                 doDummyMessage(channel);
             } catch (StatusRuntimeException e) {
-                if (interceptor != null) {
-                    interceptor.close();
-                }
+                interceptor.close();
                 shutdownNowAndWait(channel, channelId);
                 throw e;
             }
             // If here, channel is open.
             channels.put(channelId, channel);
-            if (interceptor != null) {
-                interceptors.put(channelId, interceptor);
-            }
+            interceptors.put(channelId, interceptor);
             return channel;
         } finally {
             lock.unlock();
