diff --git a/arkindex_worker/worker/base.py b/arkindex_worker/worker/base.py
index 8e6113d50ca228f043aeca7e727a41a22dbe813e..2a20e0a1b3d76cb971188ecff1172336c39d90e5 100644
--- a/arkindex_worker/worker/base.py
+++ b/arkindex_worker/worker/base.py
@@ -118,6 +118,7 @@ class BaseWorker(object):
         self.parser.add_argument(
             "-v",
             "--verbose",
+            "--debug",
             help="Display more information on events and errors",
             action="store_true",
             default=False,
@@ -138,8 +139,8 @@ class BaseWorker(object):
         # CLI args are stored on the instance so that implementations can access them
         self.args = self.parser.parse_args()
 
-        # Setup logging level
-        if self.args.verbose:
+        # Setup logging level if verbose or if ARKINDEX_DEBUG is set to true
+        if self.args.verbose or os.environ.get("ARKINDEX_DEBUG"):
             logger.setLevel(logging.DEBUG)
             logger.debug("Debug output enabled")
 
@@ -210,6 +211,11 @@ class BaseWorker(object):
                 if self.user_configuration:
                     logger.info("Loaded user configuration from WorkerRun")
 
+        # if debug mode is set to true activate debug mode in logger
+        if self.user_configuration and self.user_configuration.get("debug"):
+            logger.setLevel(logging.DEBUG)
+            logger.debug("Debug output enabled")
+
         task_id = os.environ.get("PONOS_TASK")
         paths = None
         if self.support_cache and self.args.database is not None:
diff --git a/tests/test_base_worker.py b/tests/test_base_worker.py
index fbcbfb45dcc186210ed155263f92d06dc8263be2..5d926758f73aa7fe5ef0b4c9beb1a3300181130e 100644
--- a/tests/test_base_worker.py
+++ b/tests/test_base_worker.py
@@ -119,6 +119,24 @@ def test_cli_arg_verbose_given(mocker, mock_config_api):
     logger.setLevel(logging.NOTSET)
 
 
+def test_cli_envvar_debug_given(mocker, monkeypatch, mock_config_api):
+    worker = BaseWorker()
+
+    assert logger.level == logging.NOTSET
+    assert not hasattr(worker, "api_client")
+    mocker.patch.object(sys, "argv", ["worker"])
+    monkeypatch.setenv("ARKINDEX_DEBUG", True)
+
+    worker.configure()
+    assert logger.level == logging.DEBUG
+    assert worker.api_client
+    assert worker.worker_version_id == "12341234-1234-1234-1234-123412341234"
+    assert worker.is_read_only is False
+    assert worker.config == {"someKey": "someValue"}  # from API
+
+    logger.setLevel(logging.NOTSET)
+
+
 def test_configure_dev_mode(
     mocker, monkeypatch, mock_user_api, mock_worker_version_api
 ):
@@ -186,6 +204,34 @@ def test_configure_user_configuration_defaults(
     }
 
 
+@pytest.mark.parametrize("debug_dict", [{"debug": True}, {"debug": False}])
+def test_configure_user_config_debug(
+    mocker, monkeypatch, responses, mock_config_api, debug_dict
+):
+    worker = BaseWorker()
+    mocker.patch.object(sys, "argv", ["worker"])
+    run_id = "aaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
+    configuration_id = "bbbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
+    monkeypatch.setenv("ARKINDEX_WORKER_RUN_ID", run_id)
+    assert logger.level == logging.NOTSET
+    responses.add(
+        responses.GET,
+        f"http://testserver/api/v1/imports/workers/{run_id}/",
+        json={"id": run_id, "configuration_id": configuration_id},
+    )
+    responses.add(
+        responses.GET,
+        f"http://testserver/api/v1/workers/configurations/{configuration_id}/",
+        json={"id": configuration_id, "name": "BBB", "configuration": debug_dict},
+    )
+    worker.configure()
+
+    assert worker.user_configuration == debug_dict
+    expected_log_level = logging.DEBUG if debug_dict["debug"] else logging.NOTSET
+    assert logger.level == expected_log_level
+    logger.setLevel(logging.NOTSET)
+
+
 def test_configure_worker_run_missing_conf(
     mocker, monkeypatch, responses, mock_config_api
 ):