From f58169f8488a48a13106c7d71fb1f7fc88f8b776 Mon Sep 17 00:00:00 2001 From: diegoferigo Date: Tue, 11 Jun 2024 11:18:20 +0200 Subject: [PATCH] Allow overriding default logging verbosity --- src/jaxsim/__init__.py | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/src/jaxsim/__init__.py b/src/jaxsim/__init__.py index d9cf2c2e0..1f2a24130 100644 --- a/src/jaxsim/__init__.py +++ b/src/jaxsim/__init__.py @@ -28,6 +28,7 @@ def _np_options() -> None: def _is_editable() -> bool: + import importlib.util import pathlib import site @@ -46,11 +47,38 @@ def _is_editable() -> bool: return jaxsim_package_dir not in site.getsitepackages() -# Initialize the logging verbosity -if _is_editable(): - logging.configure(level=logging.LoggingLevel.DEBUG) -else: - logging.configure(level=logging.LoggingLevel.WARNING) +def _get_default_logging_level(env_var: str) -> logging.LoggingLevel: + """ + Get the default logging level. + + Args: + env_var: The environment variable to check. + + Returns: + The logging level to set. + """ + + import os + + # Define the default logging level depending on the installation mode. + default_logging_level = ( + logging.LoggingLevel.DEBUG if _is_editable() else logging.LoggingLevel.WARNING + ) + + # Allow to override the default logging level with an environment variable. + try: + return logging.LoggingLevel[ + os.environ.get(env_var, default_logging_level.name).upper() + ] + + except KeyError as exc: + msg = f"Invalid logging level defined in {env_var}='{os.environ[env_var]}'" + raise RuntimeError(msg) from exc + + +# Configure the logger with the default logging level. +logging.configure(level=_get_default_logging_level(env_var="JAXSIM_LOGGING_LEVEL")) + # Configure JAX _jnp_options() @@ -60,6 +88,7 @@ def _is_editable() -> bool: del _jnp_options del _np_options +del _get_default_logging_level del _is_editable from . import terrain # isort:skip