Tooling for managing asset compression, storage, and retrieval
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.3 KiB

  1. import logging
  2. LOG = logging.getLogger("acm.logging")
  3. def setup_basic_logging(
  4. logger_name,
  5. logger_level = logging.ERROR,
  6. log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
  7. date_format="%Y-%m-%dT%H:%M:%S%Z",
  8. default_level = logging.INFO,
  9. ):
  10. """
  11. Initialize logging with sane defaults
  12. """
  13. logging.basicConfig(
  14. format=log_format,
  15. datefmt=date_format,
  16. level=default_level
  17. )
  18. configured_logger = logging.getLogger(logger_name)
  19. configured_logger.setLevel(logger_level)
  20. def update_logging_level(verbosity: int = 0, *loggers):
  21. """
  22. Configure logging based on the requested verbosity
  23. """
  24. if verbosity > 2:
  25. logging_level = logging.DEBUG
  26. elif verbosity > 1:
  27. logging_level = logging.INFO
  28. elif verbosity > 0:
  29. logging_level = logging.WARN
  30. elif verbosity == 0:
  31. logging_level = logging.ERROR
  32. elif verbosity < 0:
  33. logging_level = logging.CRITICAL
  34. for logger in loggers:
  35. if isinstance(logger, logging.Logger) or isinstance(logger, logging.Handler):
  36. logger.setLevel(logging_level)
  37. else:
  38. logger_instance = logging.getLogger(logger)
  39. logger_instance.setLevel(logging_level)
  40. LOG.debug("Set logging level for to %s", logging_level)