diff --git a/inventory_provider/environment.py b/inventory_provider/environment.py
index ad4bcadcf93f39e75e403fab6fd2545ff46284d9..3e9396e79cfcd43cc77b9a4f6da315d356394c50 100644
--- a/inventory_provider/environment.py
+++ b/inventory_provider/environment.py
@@ -1,26 +1,18 @@
-import logging
+import json
+import logging.config
 import os
-import sys
-from inventory_provider import constants
-
-
-def _level_from_env(var_name, default_level=logging.INFO):
-    level_str = os.getenv(var_name, logging.getLevelName(default_level))
-    numeric_level = getattr(logging, level_str.upper(), default_level)
-    logging.debug('setting %s logging level to %s'
-                  % (var_name, logging.getLevelName(numeric_level)))
-    return numeric_level
 
 
 def setup_logging():
-    logging.basicConfig(
-        stream=sys.stderr,
-        level=_level_from_env('DEFAULT_LOGGING', logging.INFO))
-    logging.getLogger(constants.SNMP_LOGGER_NAME).setLevel(
-        _level_from_env('SNMP_LOGGING', logging.INFO))
-    logging.getLogger(constants.TASK_LOGGER_NAME).setLevel(
-        _level_from_env('TASK_LOGGING', logging.INFO))
-    logging.getLogger(constants.JUNIPER_LOGGER_NAME).setLevel(
-        _level_from_env('JUNIPER_LOGGING', logging.INFO))
-    logging.getLogger(constants.DATABASE_LOGGER_NAME).setLevel(
-        _level_from_env('DATABASE_LOGGING', logging.INFO))
+    """
+    set up logging using the configured filename
+
+    if LOGGING_CONFIG is defined in the environment, use this for
+    the filename, otherwise use logging_default_config.json
+    """
+    default_filename = os.path.join(
+        os.path.dirname(__file__),
+        'logging_default_config.json')
+    filename = os.getenv('LOGGING_CONFIG', default_filename)
+    with open(filename) as f:
+        logging.config.dictConfig(json.loads(f.read()))