diff --git a/dan/datasets/extract/utils.py b/dan/datasets/extract/utils.py
index 6bd3693c68c9422b8709c001f5166fc6a4d54b4c..70903330686018c93d1cb871453703bd662e6ec6 100644
--- a/dan/datasets/extract/utils.py
+++ b/dan/datasets/extract/utils.py
@@ -33,7 +33,7 @@ TRIM_RETURN_REGEX = re.compile(r"[\r\n]+")
 
 
 def _retry_log(retry_state, *args, **kwargs):
-    logger.debug(
+    logger.warning(
         f"Request to {retry_state.args[0]} failed ({repr(retry_state.outcome.exception())}), "
         f"retrying in {retry_state.idle_for} seconds"
     )
diff --git a/tests/test_extract.py b/tests/test_extract.py
index ce4e13587ae8479f14778b3eb73484eb7197bd7d..4240e2fb7779d761b1bb1bb384e790fd0543e438 100644
--- a/tests/test_extract.py
+++ b/tests/test_extract.py
@@ -741,7 +741,7 @@ def test_download_image_error(iiif_url, caplog, capsys):
     assert captured.out == "deadbeef: Image URL must be HTTP(S)\n"
 
 
-def test_download_image_error_try_max(responses):
+def test_download_image_error_try_max(responses, caplog):
     # An image's URL
     url = (
         "https://blabla.com/iiif/2/image_path.jpg/231,699,2789,3659/full/0/default.jpg"
@@ -774,6 +774,12 @@ def test_download_image_error_try_max(responses):
         fixed_url
     ]
 
+    # Check error log
+    assert len(caplog.record_tuples) == 2
+
+    # We should only have WARNING levels
+    assert set(level for _, level, _ in caplog.record_tuples) == {logging.WARNING}
+
 
 @pytest.mark.parametrize("allow_empty", (True, False))
 def test_empty_transcription(allow_empty, mock_database):