diff --git a/common/structlog_setup.py b/common/structlog_setup.py
index cbbda89..828c439 100644
--- a/common/structlog_setup.py
+++ b/common/structlog_setup.py
@@ -79,6 +79,14 @@
     logging.config.dictConfig(log_config)
     logging.root.level -= 10 * verbosity_adjust
 
+    # Add TRACE log level (lower than DEBUG:10)
+    TRACE_LOGLVL = 5
+    logging.addLevelName(TRACE_LOGLVL, "TRACE")
+    def trace_loglevel(self, message, *args, **kws):
+        if self.isEnabledFor(TRACE_LOGLVL):
+            self._log(TRACE_LOGLVL, message, args, **kws)
+    logging.Logger.trace = trace_loglevel
+
     processors = [
         add_exc_info_flag_for_exception,
         structlog.processors.StackInfoRenderer(),
@@ -96,7 +104,6 @@
     log.info("first-line")
     return log
 
-
 def update_logging(instance_id, vcore_id):
     """
     Add the vcore id to the structured logger
diff --git a/voltha/core/global_handler.py b/voltha/core/global_handler.py
index 098e145..f6e728a 100644
--- a/voltha/core/global_handler.py
+++ b/voltha/core/global_handler.py
@@ -159,12 +159,12 @@
     @twisted_async
     @inlineCallbacks
     def ListLogicalDevices(self, request, context):
-        log.debug('grpc-request', request=request)
+        log.trace('grpc-request', request=request)
         response = yield self.dispatcher.dispatch('ListLogicalDevices',
                                                   Empty(),
                                                   context,
                                                   broadcast=True)
-        log.debug('grpc-response', response=response)
+        log.trace('grpc-response', response=response)
         returnValue(response)
 
     @twisted_async
@@ -190,13 +190,13 @@
     @twisted_async
     @inlineCallbacks
     def ListLogicalDevicePorts(self, request, context):
-        log.debug('grpc-request', request=request)
+        log.trace('grpc-request', request=request)
 
         response = yield self.dispatcher.dispatch('ListLogicalDevicePorts',
                                                   request,
                                                   context,
                                                   id=request.id)
-        log.debug('grpc-response', response=response)
+        log.trace('grpc-response', response=response)
         if isinstance(response, DispatchError):
             log.warn('grpc-error-response', error=response.error_code)
             context.set_details(
@@ -204,7 +204,7 @@
             context.set_code(response.error_code)
             returnValue(Ports())
         else:
-            log.debug('grpc-success-response', response=response)
+            log.trace('grpc-success-response', response=response)
             returnValue(response)
 
     @twisted_async
@@ -476,19 +476,19 @@
     @twisted_async
     @inlineCallbacks
     def ListDevicePorts(self, request, context):
-        log.debug('grpc-request', request=request)
+        log.trace('grpc-request', request=request)
         response = yield self.dispatcher.dispatch('ListDevicePorts',
                                                   request,
                                                   context,
                                                   id=request.id)
-        log.debug('grpc-response', response=response)
+        log.trace('grpc-response', response=response)
         if isinstance(response, DispatchError):
             log.warn('grpc-error-response', error=response.error_code)
             context.set_details('Device \'{}\' error'.format(request.id))
             context.set_code(response.error_code)
             returnValue(Ports())
         else:
-            log.debug('grpc-success-response', response=response)
+            log.trace('grpc-success-response', response=response)
             returnValue(response)
 
     @twisted_async
diff --git a/voltha/core/local_handler.py b/voltha/core/local_handler.py
index 2a2df05..4fc7ab8 100644
--- a/voltha/core/local_handler.py
+++ b/voltha/core/local_handler.py
@@ -135,7 +135,7 @@
 
     @twisted_async
     def ListLogicalDevices(self, request, context):
-        log.debug('grpc-request', request=request)
+        log.trace('grpc-request', request=request)
         items = self.root.get('/logical_devices')
         return LogicalDevices(items=items)
 
@@ -161,7 +161,7 @@
 
     @twisted_async
     def ListLogicalDevicePorts(self, request, context):
-        log.debug('grpc-request', request=request)
+        log.trace('grpc-request', request=request)
 
         if '/' in request.id:
             context.set_details(
@@ -725,7 +725,7 @@
 
     @twisted_async
     def ListDevicePorts(self, request, context):
-        log.debug('grpc-request', request=request)
+        log.trace('grpc-request', request=request)
 
         if '/' in request.id:
             context.set_details(
