Source code for evalml.utils.logger
"""Logging functions."""
import logging
import sys
import time
[docs]def get_logger(name):
    """Get the logger with the associated name.
    Args:
        name (str): Name of the logger to get.
    Returns:
        The logger object with the associated name.
    """
    logger = logging.getLogger(name)
    if not len(logger.handlers):
        logger.setLevel(logging.DEBUG)
        stdout_handler = logging.StreamHandler(sys.stdout)
        stdout_handler.setLevel(logging.INFO)
        stdout_handler.setFormatter(logging.Formatter("%(message)s"))
        logger.addHandler(stdout_handler)
    return logger 
[docs]def log_title(logger, title):
    """Log with a title."""
    logger.info("\n" + "*" * (len(title) + 4))
    logger.info("* %s *" % title)
    logger.info("*" * (len(title) + 4))
    logger.info("") 
[docs]def log_subtitle(logger, title, underline="="):
    """Log with a subtitle."""
    logger.info("")
    logger.info("%s" % title)
    logger.info(underline * len(title)) 
[docs]def time_elapsed(start_time):
    """How much time has elapsed since the search started.
    Args:
        start_time (int): Time when search started.
    Returns:
        str: elapsed time formatted as a string [H:]MM:SS
    """
    time_diff = time.time() - start_time
    # Source: tqdm.std.tqdm.format_interval
    mins, s = divmod(int(time_diff), 60)
    h, m = divmod(mins, 60)
    if h:
        return "{0:d}:{1:02d}:{2:02d}".format(h, m, s)
    else:
        return "{0:02d}:{1:02d}".format(m, s) 
[docs]def log_batch_times(logger, batch_times):
    """Used to print out the batch times.
    Args:
        logger: the logger.
        batch_times: dict with (batch number, {pipeline name, pipeline time}).
    """
    log_title(logger, "Batch Time Stats")
    for batch_number in batch_times:
        subtitle = "Batch " + str(batch_number) + " time stats:"
        log_subtitle(logger, subtitle)
        for pipeline_name in batch_times[batch_number]:
            logger.info(
                "\n"
                + pipeline_name
                + ": "
                + f"{batch_times[batch_number][pipeline_name]:.2f} seconds",
            )
        logger.info("")