diff --git a/usadelndsoc/__init__.py b/usadelndsoc/__init__.py
index 84d4a11dc168e0b468f153775cfaf645ebf91957..85ea542470218a6ec38a1243d0d4e3cd9705aeb5 100644
--- a/usadelndsoc/__init__.py
+++ b/usadelndsoc/__init__.py
@@ -1,7 +1,6 @@
 # -*- coding:utf-8; eval: (blacken-mode) -*-
 
 import logging
-import contextlib
 
 
 logger = logging.getLogger(__name__)
@@ -36,15 +35,23 @@ def _init_logging():
     logging.config.dictConfig(cfg)
 
 
-@contextlib.contextmanager
 def with_log_level(level):
-    old_level = int(logger.level)
-    logger.setLevel(level)
-    try:
-        yield
-    finally:
-        logger.setLevel(old_level)
+    import functools
+
+    def deco(func):
+        @functools.wraps(func)
+        def wrapper(*a, **kw):
+            old_level = int(logger.level)
+            logger.setLevel(level)
+            try:
+                return func(*a, **kw)
+            finally:
+                logger.setLevel(old_level)
+
+        return wrapper
+
+    return deco
 
 
 _init_logging()
-del _init_logging, logging, contextlib
+del _init_logging, logging