diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py b/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
index 2612c28..5ce2dd1 100644
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_device_handler.py
@@ -263,7 +263,7 @@
             return ports[0]
         return None
 
-    def store_flows(self, uplink_classifier, uplink_action, 
+    def store_flows(self, uplink_classifier, uplink_action,
                     v_enet, traffic_class):
         flow = FlowInfo()
         flow.classifier = dict(uplink_classifier)
@@ -452,7 +452,7 @@
             if self.heartbeat_miss > 0:
                 self.heartbeat_miss = 0
                 if d.is_reboot == bal_pb2.BAL_OLT_UP_AFTER_REBOOT:
-                    self.log.info('Activating OLT again after reboot')
+                    self.log.info('Activating-OLT-again-after-reboot')
 
                     # Since OLT is reachable after reboot, OLT should configurable with
                     # all the old existing flows. NNI port should be mark it as down for
@@ -475,7 +475,7 @@
                     _device.oper_status = OperStatus.ACTIVE
                     _device.reason = ''
                     self.adapter_agent.update_device(_device)
-                self.log.info('Clearing the Hearbeat Alarm')
+                self.log.info('Clearing-the-Hearbeat-Alarm')
                 heartbeat_alarm(_device, 0)
 
         if (self.heartbeat_miss >= self.heartbeat_failed_limit) and \
@@ -493,11 +493,11 @@
     @inlineCallbacks
     def reboot(self):
         err_status  = yield self.bal.set_bal_reboot(self.device_id.__str__())
-        self.log.info('Reboot Status', err_status = err_status)
+        self.log.info('Reboot-Status', err_status = err_status)
 
     @inlineCallbacks
     def _handle_nni_pm_counter_req_towards_device(self, device, intf_id):
-        interface_type = bal_model_types_pb2.BAL_INTF_TYPE_NNI 
+        interface_type = bal_model_types_pb2.BAL_INTF_TYPE_NNI
         yield self._req_pm_counter_from_device_in_loop(device, interface_type, intf_id)
 
         reactor.callLater(self.pm_metrics.default_freq/10,
@@ -506,7 +506,7 @@
 
     @inlineCallbacks
     def _handle_pon_pm_counter_req_towards_device(self, device, intf_id):
-        interface_type = bal_model_types_pb2.BAL_INTF_TYPE_PON 
+        interface_type = bal_model_types_pb2.BAL_INTF_TYPE_PON
         yield self._req_pm_counter_from_device_in_loop(device, interface_type, intf_id)
 
         reactor.callLater(self.pm_metrics.default_freq/10,
@@ -518,7 +518,7 @@
         # NNI port is hardcoded to 0
         kpi_status = -1
         if device.connect_status == ConnectStatus.UNREACHABLE:
-           self.log.info('Device is not Reachable')
+           self.log.info('Device-is-not-Reachable')
         else:
            try:
               stats_info = yield self.bal.get_bal_interface_stats(intf_id, interface_type)
@@ -564,7 +564,7 @@
                  prefixes=prefixes)
            self.adapter_agent.submit_kpis(kpi_event)
         else:
-           self.log.info('Lost Connectivity to OLT')
+           self.log.info('Lost-Connectivity-to-OLT')
 
     def update_pm_config(self, device, pm_config):
         self.log.info("update-pm-config", device=device, pm_config=pm_config)
@@ -629,21 +629,21 @@
 
     def BalIfaceLosAlarm(self, device_id, Iface_ID,\
                          los_status, IfaceLos_data):
-        self.log.info('Interface Loss Of Signal Alarm')
+        self.log.info('Interface-Loss-Of-Signal-Alarm')
         self.handle_alarms(device_id,"pon_ni",\
                            Iface_ID,\
                            "loss_of_signal",los_status,"high",\
                            IfaceLos_data)
 
     def BalIfaceIndication(self, device_id, Iface_ID):
-        self.log.info('Interface Indication')
+        self.log.info('Interface-Indication')
         device = self.adapter_agent.get_device(self.device_id)
         self._handle_pon_pm_counter_req_towards_device(device,Iface_ID)
 
     def BalSubsTermDgiAlarm(self, device_id, intf_id,\
                             onu_id, dgi_status, balSubTermDgi_data,\
                             ind_info):
-        self.log.info('Subscriber terminal dying gasp')
+        self.log.info('Subscriber-terminal-dying-gasp')
         self.handle_alarms(device_id,"onu",\
                            intf_id,\
                            "dgi_indication",dgi_status,"medium",\
@@ -663,7 +663,7 @@
 
     def BalSubsTermLosAlarm(self, device_id, Iface_ID,
                          los_status, SubTermAlarm_Data):
-        self.log.info('ONU Alarms for Subscriber Terminal LOS')
+        self.log.info('ONU-Alarms-for-Subscriber-Terminal-LOS')
         self.handle_alarms(device_id,"onu",\
                            Iface_ID,\
                            "ONU : Loss Of Signal",\
@@ -672,7 +672,7 @@
 
     def BalSubsTermLobAlarm(self, device_id, Iface_ID,
                          lob_status, SubTermAlarm_Data):
-        self.log.info('ONU Alarms for Subscriber Terminal LOB')
+        self.log.info('ONU-Alarms-for-Subscriber-Terminal-LOB')
         self.handle_alarms(device_id,"onu",\
                            Iface_ID,\
                            "ONU : Loss Of Burst",\
@@ -681,7 +681,7 @@
 
     def BalSubsTermLopcMissAlarm(self, device_id, Iface_ID,
                          lopc_miss_status, SubTermAlarm_Data):
-        self.log.info('ONU Alarms for Subscriber Terminal LOPC Miss')
+        self.log.info('ONU-Alarms-for-Subscriber-Terminal-LOPC-Miss')
         self.handle_alarms(device_id,"onu",\
                            Iface_ID,\
                            "ONU : Loss Of PLOAM miss channel",\
@@ -690,7 +690,7 @@
 
     def BalSubsTermLopcMicErrorAlarm(self, device_id, Iface_ID,
                          lopc_mic_error_status, SubTermAlarm_Data):
-        self.log.info('ONU Alarms for Subscriber Terminal LOPC Mic Error')
+        self.log.info('ONU-Alarms-for-Subscriber-Terminal-LOPC-Mic-Error')
         self.handle_alarms(device_id,"onu",\
                            Iface_ID,\
                            "ONU : Loss Of PLOAM MIC Error",\
@@ -808,11 +808,11 @@
             self.adapter_agent.update_device(device)
             self.update_logical_port(ASFVOLT_NNI_PORT, Port.ETHERNET_NNI,
                                      OFPPS_LIVE)
-            self.log.info('OLT activation complete')
+            self.log.info('OLT-activation-complete')
 
             #heart beat - To health checkup of OLT
             if self.is_heartbeat_started == 0:
-                self.log.info('Heart beat is not yet started..starting now')
+                self.log.info('Heart-beat-is-not-yet-started-starting-now')
                 self.heartbeat(device)
 
                 self.pm_metrics=Asfvolt16OltPmMetrics(device)
@@ -929,7 +929,7 @@
             self.device_id,
             onu_id=ind_info['onu_id'])
         if child_device is None:
-            self.log.info('Onu is not configured', onu_id=ind_info['onu_id'])
+            self.log.info('Onu-is-not-configured', onu_id=ind_info['onu_id'])
             return
         try:
             self.adapter_agent.receive_proxied_message(
@@ -948,7 +948,7 @@
             self.log.info('Failed-to-find-ONU-Info',
                           serial_number=serial_number)
         elif child_device.admin_state == AdminState.ENABLED:
-            self.log.info('Activating ONU',
+            self.log.info('Activating-ONU',
                           serial_number=serial_number,
                           onu_id=child_device.proxy_address.onu_id,
                           pon_id=child_device.parent_port_no)
@@ -1120,7 +1120,7 @@
         super(Asfvolt16Handler, self).delete()
 
     def handle_packet_in(self, ind_info):
-        self.log.info('Received Packet-In', ind_info=ind_info)
+        self.log.info('Received-Packet-In', ind_info=ind_info)
         logical_port = self.get_logical_port_using_gem_port(ind_info['svc_port'])
         pkt = Ether(ind_info['packet'])
         kw = dict(
@@ -1323,7 +1323,7 @@
                     if found is True:
                         v_enet = self.get_venet(name=port.label)
                     else:
-                        self.log.error('Failed to get v_enet info',
+                        self.log.error('Failed-to-get-v_enet-info',
                                        in_port=classifier_info['in_port'])
                         return
                     self.divide_and_add_flow(v_enet, classifier_info, action_info)
@@ -1337,7 +1337,7 @@
     def divide_and_add_flow(self, v_enet, classifier, action):
         if 'ip_proto' in classifier:
             if classifier['ip_proto'] == 17:
-                self.log.error('Addtion of DHCP flows are defferd')
+                self.log.error('Addition-of-DHCP-flows-are-defferd')
                 '''
                 # DHCP flow from the ONOS doesn't have Ctag and Stags
                 # information. For now DHCP flow will be added as a
@@ -1346,7 +1346,7 @@
                 #                   ASFVOLT_DHCP_UNTAGGED_ID)
                 '''
             elif classifier['ip_proto'] == 2:
-                self.log.info('Addtion of IGMP flow are not handled yet')
+                self.log.info('Addition-of-IGMP-flow-are-not-handled-yet')
                 '''
                 #self.add_igmp_flow(classifier, action, v_enet,
                 #                   ASFVOLT_IGMP_UNTAGGED_ID)
diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_ind_handler.py b/voltha/adapters/asfvolt16_olt/asfvolt16_ind_handler.py
index 4c93105..af8f323 100755
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_ind_handler.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_ind_handler.py
@@ -105,7 +105,7 @@
         return bal_err
 
     def bal_iface_ind(self, indication, device_handler):
-        self.log.info('Awaiting ONU discovery')
+        self.log.info('Awaiting-ONU-discovery')
         reactor.callLater(0,\
                           device_handler.BalIfaceIndication,\
                           indication.device_id.decode('unicode-escape'),\
@@ -289,7 +289,7 @@
         packet_data = indication.balOmciResp.key.packet_send_dest
         ind_info['onu_id'] = packet_data.itu_omci_channel.sub_term_id
         ind_info['packet'] = indication.balOmciResp.data.pkt
-        self.log.info('ONU Id is',
+        self.log.info('ONU-Id-is',
                       onu_id=packet_data.itu_omci_channel.sub_term_id)
         reactor.callLater(0,
                           device_handler.handle_omci_ind,
diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_olt.py b/voltha/adapters/asfvolt16_olt/asfvolt16_olt.py
index e5872d6..9935646 100644
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_olt.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_olt.py
@@ -33,7 +33,7 @@
                                                device_handler_class=Asfvolt16Handler,
                                                name='asfvolt16_olt',
                                                vendor='Edgecore',
-                                               version='0.92',
+                                               version='0.93',
                                                device_type='asfvolt16_olt')
         # register for adapter messages
         self.port = 60001
diff --git a/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py b/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
index 7113aae..2b65da7 100644
--- a/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
+++ b/voltha/adapters/asfvolt16_olt/asfvolt16_rx_handler.py
@@ -48,7 +48,7 @@
     @twisted_async
     def BalAccTermOperStsCngInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_acc_term_oper_sts_cng_ind(request, device_handler)
@@ -59,7 +59,7 @@
     @twisted_async
     def BalAccTermInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Received access terminal Indication',
+        self.log.info('Received-access-terminal-Indication',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_acc_term_ind(request, device_handler)
@@ -70,7 +70,7 @@
     @twisted_async
     def BalFlowOperStsCng(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_flow_oper_sts_cng(request, device_handler)
@@ -81,7 +81,7 @@
     @twisted_async
     def BalFlowInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_flow_ind(request, device_handler)
@@ -92,7 +92,7 @@
     @twisted_async
     def BalGroupInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_group_ind(request, device_handler)
@@ -103,7 +103,7 @@
     @twisted_async
     def BalIfaceOperStsCng(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_iface_oper_sts_cng(request, device_handler)
@@ -114,7 +114,7 @@
     @twisted_async
     def BalIfaceLos(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Interface Loss Of Signal Alarm',\
+        self.log.info('Interface-Loss-Of-Signal-Alarm',\
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_iface_los(request, device_handler)
@@ -125,7 +125,7 @@
     @twisted_async
     def BalIfaceInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Interface indication Received',
+        self.log.info('Interface-indication-Received',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_iface_ind(request, device_handler)
@@ -136,7 +136,7 @@
     @twisted_async
     def BalIfaceStat(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_iface_stat(request, device_handler)
@@ -147,7 +147,7 @@
     @twisted_async
     def BalSubsTermOperStsCng(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_subs_term_oper_sts_cng(request, device_handler)
@@ -158,7 +158,7 @@
     @twisted_async
     def BalSubsTermDiscoveryInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Subscriber terminal discovery Indication',
+        self.log.info('Subscriber-terminal-discovery-Indication',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_subs_term_discovery_ind(request, device_handler)
@@ -169,7 +169,7 @@
     @twisted_async
     def BalSubsTermAlarmInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('ONU Alarms for Subscriber Terminal',\
+        self.log.info('ONU-Alarms-for-Subscriber-Terminal',\
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_subs_term_alarm_ind(request, device_handler)
@@ -180,7 +180,7 @@
     @twisted_async
     def BalSubsTermDgiInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Subscriber terminal dying gasp', \
+        self.log.info('Subscriber-terminal-dying-gasp', \
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_subs_term_dgi_ind(request, device_handler)
@@ -191,7 +191,7 @@
     @twisted_async
     def BalSubsTermInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Subscriber terminal indication received',
+        self.log.info('Subscriber-terminal-indication-received',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_subs_term_ind(request, device_handler)
@@ -202,7 +202,7 @@
     @twisted_async
     def BalTmQueueIndInfo(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_tm_queue_ind_info(request, device_handler)
@@ -213,7 +213,7 @@
     @twisted_async
     def BalTmSchedIndInfo(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_tm_sched_ind_info(request, device_handler)
@@ -224,7 +224,7 @@
     @twisted_async
     def BalPktBearerChannelRxInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Received Packet-In',
+        self.log.info('Received-Packet-In',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_pkt_bearer_channel_rx_ind(request,
@@ -236,7 +236,7 @@
     @twisted_async
     def BalPktOmciChannelRxInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Received OMCI Messages',
+        self.log.info('Received-OMCI-Messages',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_pkt_omci_channel_rx_ind(request,
@@ -248,7 +248,7 @@
     @twisted_async
     def BalPktIeeeOamChannelRxInd(self, request, context):
         device_id = request.device_id.decode('unicode-escape')
-        self.log.info('Not implemented yet',
+        self.log.info('Not-implemented-yet',
                       device_id=device_id, obj_type=request.objType)
         device_handler = self.adapter.devices_handlers[device_id]
         self.ind_handler.bal_pkt_ieee_oam_channel_rx_ind(request,
diff --git a/voltha/adapters/asfvolt16_olt/bal.py b/voltha/adapters/asfvolt16_olt/bal.py
index 5573027..736693a 100644
--- a/voltha/adapters/asfvolt16_olt/bal.py
+++ b/voltha/adapters/asfvolt16_olt/bal.py
@@ -59,7 +59,7 @@
                 os.environ["SERVICE_HOST_IP"]
                 adapter_ip = os.environ["SERVICE_HOST_IP"]
             except Exception as e:
-                self.log.info('voltha is running in non docker container environment')
+                self.log.info('voltha-is-running-in-non-docker-container-environment')
                 adapter_ip = get_my_primary_local_ipv4()
 
             ip_port = []
@@ -67,7 +67,7 @@
             ip_port.append(":")
             ip_port.append(str(ADAPTER_PORT))
             init.voltha_adapter_ip_port ="".join(ip_port)
-            self.log.info('Adapter port Ip', init.voltha_adapter_ip_port)
+            self.log.info('Adapter-port-IP', init.voltha_adapter_ip_port)
             self.log.info('connecting-olt', host_and_port=host_and_port,
                           init_details=init)
             yield self.stub.BalApiInit(init)
@@ -106,7 +106,7 @@
                           pon_port_details=obj)
             yield self.stub.BalCfgSet(obj)
         except Exception as e:
-            self.log.info('activating-pon-port in olt-exception', exc=str(e))
+            self.log.info('activating-pon-port-in-olt-exception', exc=str(e))
         return
 
     @inlineCallbacks
@@ -379,13 +379,13 @@
                 obj.tm_sched_cfg.data.owner.agg_port.presence_mask |= \
                     bal_model_types_pb2.BAL_TM_SCHED_OWNER_AGG_PORT_ID_AGG_PORT_ID
             else:
-                self.log.error('Not supported scheduling type',
+                self.log.error('Not-supported-scheduling-type',
                                sched_type=owner_info['type'])
                 return
             obj.tm_sched_cfg.data.sched_type = \
                 bal_model_types_pb2.BAL_TM_SCHED_TYPE_SP_WFQ
             obj.tm_sched_cfg.data.num_priorities = num_priority
-            self.log.info('Creating Scheduler',
+            self.log.info('Creating-Scheduler',
                           scheduler_details=obj)
             yield self.stub.BalCfgSet(obj)
         except Exception as e:
@@ -399,42 +399,42 @@
 
     @inlineCallbacks
     def get_bal_interface_stats(self, intf_id, interface_type):
-        self.log.info('Fetching Statistics')
+        self.log.info('Fetching-Statistics')
         try:
             obj = bal_model_types_pb2.BalInterfaceKey()
             obj.intf_id = intf_id
             obj.intf_type = interface_type
             stats = yield self.stub.BalCfgStatGet(obj)
-            self.log.info('Fetching statistics success',
+            self.log.info('Fetching-statistics-success',
                           stats_data=stats.data)
             returnValue(stats)
         except Exception as e:
-            self.log.info('Fetching statistics failed', exc=str(e))
+            self.log.info('Fetching-statistics-failed', exc=str(e))
 
     @inlineCallbacks
     def set_bal_reboot(self, device_id):
-        self.log.info('Set Reboot')
+        self.log.info('Set-Reboot')
         try:
             obj = bal_pb2.BalReboot()
             obj.device_id = device_id
             err = yield self.stub.BalApiReboot(obj)
-            self.log.info('OLT Reboot Success', reboot_err=err)
+            self.log.info('OLT-Reboot-Success', reboot_err=err)
             returnValue(err)
         except Exception as e:
-            self.log.info('OLT Reboot failed', exc=str(e))
+            self.log.info('OLT-Reboot-failed', exc=str(e))
 
     @inlineCallbacks
     def get_bal_heartbeat(self, device_id):
-        self.log.info('Get HeartBeat')
+        self.log.info('Get-HeartBeat')
         try:
             obj = bal_pb2.BalHeartbeat()
             obj.device_id = device_id
             rebootStatus = yield self.stub.BalApiHeartbeat(obj)
-            self.log.info('OLT HeartBeat Response Received from',
+            self.log.info('OLT-HeartBeat-Response-Received-from',
                           device=device_id, rebootStatus=rebootStatus)
             returnValue(rebootStatus)
         except Exception as e:
-            self.log.info('OLT HeartBeat failed', exc=str(e))
+            self.log.info('OLT-HeartBeat-failed', exc=str(e))
 
     def get_indication_info(self, device_id):
         while self.olt.running:
diff --git a/voltha/adapters/asfvolt16_olt/grpc_server.py b/voltha/adapters/asfvolt16_olt/grpc_server.py
index e9f1006..2c96c87 100644
--- a/voltha/adapters/asfvolt16_olt/grpc_server.py
+++ b/voltha/adapters/asfvolt16_olt/grpc_server.py
@@ -38,15 +38,15 @@
         self.log = log
 
     def start(self, activation_func, service):
-        self.log.debug('Edge core GRPC server starting')
+        self.log.debug('Asfvolt16-GRPC-server-starting')
         self.services.append(service)
         activation_func(service, self.server)
         self.server.add_insecure_port('[::]:%s' % self.port)
         self.server.start()
-        self.log.info('Edge core GRPC server started')
+        self.log.info('Asfvolt16-GRPC-server-started')
 
     def stop(self, grace=0):
-        self.log.info('Asfvolt16-stopping GRPC Server')
+        self.log.info('Asfvolt16-stopping-GRPC-Server')
         self.server.stop(grace)
         self.thread_pool.shutdown(False)
-        self.log.debug('Asfvolt16-stopped GRPC Server')
+        self.log.debug('Asfvolt16-stopped-GRPC-Server')
