diff --git a/VERSION b/VERSION
index 76f4151..cc6c9a4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.3.4-dev
+2.3.5
diff --git a/python/adapters/brcm_openomci_onu/main.py b/python/adapters/brcm_openomci_onu/main.py
index b1e9873..bcdc1aa 100755
--- a/python/adapters/brcm_openomci_onu/main.py
+++ b/python/adapters/brcm_openomci_onu/main.py
@@ -22,6 +22,7 @@
 import os
 import time
 import types
+import sys
 
 import arrow
 import yaml
@@ -72,7 +73,8 @@
     backend=os.environ.get('BACKEND', 'none'),
     retry_interval=os.environ.get('RETRY_INTERVAL', 2),
     heartbeat_topic=os.environ.get('HEARTBEAT_TOPIC', "adapters.heartbeat"),
-    probe=os.environ.get('PROBE', ':8080')
+    probe=os.environ.get('PROBE', ':8080'),
+    log_level=os.environ.get('LOG_LEVEL', 'WARN')
 )
 
 
@@ -177,16 +179,11 @@
                         default=False,
                         help=_help)
 
-    _help = "suppress debug and info logs"
-    parser.add_argument('-q', '--quiet',
-                        dest='quiet',
-                        action='count',
-                        help=_help)
-
-    _help = 'enable verbose logging'
-    parser.add_argument('-v', '--verbose',
-                        dest='verbose',
-                        action='count',
+    _help = 'enable logging'
+    parser.add_argument('-l', '--log_level',
+                        dest='log_level',
+                        action='store',
+                        default=defs['log_level'],
                         help=_help)
 
     _help = ('use docker container name as conatiner instance id'
@@ -310,7 +307,11 @@
         # if quiet is set we want to go up to WARNING
         # if you set both, you're doing something non-sense and you'll be back at INFO
 
-        verbosity_adjust = 1 - (args.verbose or 0) + (args.quiet or 0)
+        verbosity_adjust = self.string_to_int(str(args.log_level))
+        if verbosity_adjust == -1:
+            print("Invalid loglevel is given: " + str(args.log_level))
+            sys.exit(0)
+
         self.log = setup_logging(self.config.get('logging', {}),
                                  args.instance_id,
                                  verbosity_adjust=verbosity_adjust)
@@ -341,6 +342,15 @@
     def start(self):
         self.start_reactor()  # will not return except Keyboard interrupt
 
+    def string_to_int(self, loglevel):
+        l = loglevel.upper()
+        if l == "DEBUG": return 0
+        elif l == "INFO": return 1
+        elif l == "WARN": return 2
+        elif l == "ERROR": return 3
+        elif l == "CRITICAL": return 4
+        else: return -1
+
     def stop(self):
         pass
 
