def get_logger()

in src/lambda_functions/cw_custom_widget_python/lib/logger.py [0:0]


def get_logger(name):
    """
    Get a configured logger.
    Compatible with both the AWS Lambda runtime (root logger) and local execution
    :param name: The name of the logger (most often __name__ of the calling module)
    :return: The logger to use
    """
    logger = None
    # first case: running as a lambda function or in pytest with conftest
    # second case: running a single test or locally under test
    if len(logging.getLogger().handlers) > 0:
        logger = logging.getLogger()
        logger.setLevel(get_log_level())
        # overrides
        logging.getLogger("boto3").setLevel(logging.WARNING)
        logging.getLogger("botocore").setLevel(logging.WARNING)
        logging.getLogger("urllib3").setLevel(logging.WARNING)
    else:
        logging.basicConfig(
            format=(
                "%(asctime)s [%(levelname)s] " "%(filename)s:%(lineno)s:%(funcName)s(): %(message)s"
            ),
            level=get_log_level(),
            datefmt="%Y-%m-%d %H:%M:%S",
        )  # NOSONAR logger's config is safe here

        logger = logging.getLogger(name)
    return logger