diff --git a/pyjapc/_japc.py b/pyjapc/_japc.py
index 11173823dac2aa0315748310188e14a5023f2681..98e2dbbdcf37c6b535c73462090bab6abc0e8f8b 100644
--- a/pyjapc/_japc.py
+++ b/pyjapc/_japc.py
@@ -214,14 +214,27 @@ class PyJapc:
 
     def _setup_jvm(self, log_level):
         """Startup the JVM and the connection to Python (JPype)."""
-        mgr = cmmnbuild_dep_manager.Manager("pyjapc", logging.WARNING)
+        mgr = cmmnbuild_dep_manager.Manager("pyjapc", lvl=log_level)
         mgr.start_jpype_jvm()
 
         log4j = jp.JPackage('org').apache.log4j
         if log4j.BasicConfigurator is not None and callable(log4j.BasicConfigurator.configure):
             log4j.BasicConfigurator.configure()
             if log_level is not None:
-                log4j.Logger.getRootLogger().setLevel(log4j.Level.toLevel(log_level))
+                known_levels = {
+                    logging.DEBUG: log4j.Level.DEBUG,
+                    logging.INFO: log4j.Level.INFO,
+                    logging.WARNING: log4j.Level.WARN,
+                    logging.ERROR: log4j.Level.ERROR,
+                    logging.CRITICAL: log4j.Level.FATAL,
+                }
+                # Map Python log levels (10, 20, ...) to Java levels (10000, 20000, ...)
+                # but fall back to just passing the given level if we don't know what to do with it.
+                if log_level in known_levels:
+                    java_level = known_levels[log_level]
+                else:
+                    java_level = log4j.Level.toLevel(java_level)
+                log4j.Logger.getRootLogger().setLevel(java_level)
             else:
                 log4j.Logger.getRootLogger().setLevel(log4j.Level.WARN)