diff --git a/multivimbroker/docker/Dockerfile b/multivimbroker/docker/Dockerfile
index f12a875..5f74cf3 100644
--- a/multivimbroker/docker/Dockerfile
+++ b/multivimbroker/docker/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.7-alpine
+FROM python:3.8-alpine
 
 ENV MSB_PROTO "http"
 ENV MSB_ADDR "127.0.0.1"
diff --git a/multivimbroker/multivimbroker/middleware.py b/multivimbroker/multivimbroker/middleware.py
deleted file mode 100644
index fd063c3..0000000
--- a/multivimbroker/multivimbroker/middleware.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (c) 2017-2018 VMware, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-
-
-import uuid
-from onaplogging.mdcContext import MDC
-from multivimbroker.pub.config.config import SERVICE_NAME
-from multivimbroker.pub.config.config import FORWARDED_FOR_FIELDS
-
-
-class LogContextMiddleware(object):
-
-    #  the last IP behind multiple proxies,  if no exist proxies
-    #  get local host ip.
-    def _getLastIp(self, request):
-
-        ip = ""
-        try:
-            for field in FORWARDED_FOR_FIELDS:
-                if field in request.META:
-                    if ',' in request.META[field]:
-                        parts = request.META[field].split(',')
-                        ip = parts[-1].strip().split(":")[0]
-                    else:
-                        ip = request.META[field].split(":")[0]
-
-            if ip == "":
-                ip = request.META.get("HTTP_HOST").split(":")[0]
-
-        except Exception:
-            pass
-
-        return ip
-
-    def process_request(self, request):
-
-        # Fetch TRANSACTIONID Id and pass to plugin server
-        ReqeustID = request.META.get("HTTP_X_TRANSACTIONID", None)
-        if ReqeustID is None:
-            ReqeustID = str(uuid.uuid3(uuid.NAMESPACE_URL, SERVICE_NAME))
-            request.META["HTTP_X_TRANSACTIONID"] = ReqeustID
-        MDC.put("requestID", ReqeustID)
-        # generate the unique  id
-        InovocationID = str(uuid.uuid4())
-        MDC.put("invocationID", InovocationID)
-        MDC.put("serviceName", SERVICE_NAME)
-        # access ip
-        MDC.put("serviceIP", self._getLastIp(request))
-
-        return None
-
-    def process_response(self, request, response):
-
-        MDC.clear()
-        return response
diff --git a/multivimbroker/multivimbroker/pub/config/log.yml b/multivimbroker/multivimbroker/pub/config/log.yml
index 09be40d..bdcf2ad 100644
--- a/multivimbroker/multivimbroker/pub/config/log.yml
+++ b/multivimbroker/multivimbroker/pub/config/log.yml
@@ -11,16 +11,9 @@
         level: "DEBUG"
         class: "logging.handlers.RotatingFileHandler"
         filename: "/var/log/onap/multicloud/multivimbroker/multivimbroker.log"
-        formatter: "mdcFormat"
+        formatter: "standard"
         maxBytes: 52428800
         backupCount: 10
 formatters:
     standard:
         format: "%(asctime)s|||||%(name)s||%(thread)||%(funcName)s||%(levelname)s||%(message)s"
-    mdcFormat:
-        format: "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t"
-        mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}"
-        datefmt: "%Y-%m-%d %H:%M:%S"
-        (): onaplogging.mdcformatter.MDCFormatter
-
-
diff --git a/multivimbroker/multivimbroker/settings.py b/multivimbroker/multivimbroker/settings.py
index d5cd466..850694e 100644
--- a/multivimbroker/multivimbroker/settings.py
+++ b/multivimbroker/multivimbroker/settings.py
@@ -12,9 +12,9 @@
 
 import os
 import sys
-from logging import config
-from onaplogging import monkey
-monkey.patch_all()
+import platform
+import yaml
+from logging import config as log_config
 
 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -51,7 +51,6 @@
     'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
-    'multivimbroker.middleware.LogContextMiddleware',
 ]
 
 ROOT_URLCONF = 'multivimbroker.urls'
@@ -82,15 +81,51 @@
 
 STATIC_URL = '/static/'
 
+if platform.system() == 'Windows' or 'test' in sys.argv:
+    LOGGING = {
+        'version': 1,
+        'disable_existing_loggers': True,
+        'formatters': {
+            'standard': {
+                'format': '%(asctime)s:[%(name)s]:[%(filename)s]'
+                + '-[%(lineno)d] [%(levelname)s]:%(message)s',
+            },
+        },
+        'filters': {
+        },
+        'handlers': {
+            'file_handler': {
+                'level': 'DEBUG',
+                'class': 'logging.handlers.RotatingFileHandler',
+                'filename': os.path.join(BASE_DIR, 'logs/test.log'),
+                'formatter': 'standard',
+                'maxBytes': 1024 * 1024 * 50,
+                'backupCount': 5,
+            },
+        },
 
-LOGGING_CONFIG = None
-# yaml configuration of logging
-LOGGING_FILE = os.path.join(BASE_DIR, 'multivimbroker/pub/config/log.yml')
-config.yamlConfig(filepath=LOGGING_FILE, watchDog=True)
+        'loggers': {
+            'common': {
+                'handlers': ['file_handler'],
+                'level': 'DEBUG',
+                'propagate': False
+            },
+        }
+    }
+else:
+    log_path = "/var/log/onap/multicloud/multivimbroker"
+    if not os.path.exists(log_path):
+        os.makedirs(log_path)
 
+    LOGGING_CONFIG = None
+    # yaml configuration of logging
+    LOGGING_FILE = os.path.join(BASE_DIR, 'multivimbroker/pub/config/log.yml')
+    with open(file=LOGGING_FILE, mode='r', encoding="utf-8")as file:
+        logging_yaml = yaml.load(stream=file, Loader=yaml.FullLoader)
+    log_config.dictConfig(config=logging_yaml)
 
 if 'test' in sys.argv:
-    from multivimbroker.pub.config import config
+    # from multivimbroker.pub.config import config
     REST_FRAMEWORK = {}
     import platform
 
diff --git a/multivimbroker/requirements.txt b/multivimbroker/requirements.txt
index f417847..e792b78 100644
--- a/multivimbroker/requirements.txt
+++ b/multivimbroker/requirements.txt
@@ -26,8 +26,7 @@
 # mock==2.0.0
 # unittest_xml_reporting==1.12.0
 
-# for onap logging
-onappylog>=1.0.9
+PyYAML==5.3.1
 
 # for pecan framework
 # pecan>=1.2.1
