def setup_logging()

in src/vw-serving/src/vw_serving/sagemaker/integration.py [0:0]


def setup_logging(log_file_name=None, log_level="info"):
    """
    Sets up loggers & log formatters.

    Configures file logging to log_file_name or stream logging to sys.stderr
    if log_file_name is None.

    If the /opt/ml/errors/ path exists, configures the error logger with
    file handler pointing to /opt/ml/errors/errors.log.
    Otherwise set it to stderr.

    Args:
        log_file_name: (str) file name to write public log records to, or None to write to stdout
        log_level: (str) log level for the public logger
    """
    global _setup_loggers
    if _setup_loggers:
        logging.warning("Loggers have already been setup.")
        return

    _setup_loggers = True

    # setup default logger
    log_formatter = logging.Formatter(
        '[%(asctime)s %(levelname)s %(thread)d] %(message)s',
        datefmt='%m/%d/%Y %H:%M:%S')
    default_logger = logging.getLogger()
    # Don't fail if the log level is not known
    try:
        default_logger.setLevel(getattr(logging, log_level.upper()))
    except Exception:
        default_logger.setLevel(logging.INFO)
        default_logger.warning("Failed to set debug level to %s, using INFO", log_level)

    if log_file_name:
        handler = logging.FileHandler(log_file_name)
    else:
        handler = logging.StreamHandler(stream=sys.stdout)
    handler.setFormatter(log_formatter)
    default_logger.addHandler(handler)

    # setting up trusted logger
    trusted_log_formatter = logging.Formatter(
        '[%(asctime)s %(levelname)s %(thread)d %(filename)s:%(lineno)d] %(message)s',
        datefmt='%m/%d/%Y %H:%M:%S')

    if os.path.isdir(ERROR_VOLUME):
        trusted_log_handler = logging.FileHandler(ERROR_FILE_PATH)
    else:
        trusted_log_handler = logging.StreamHandler(stream=sys.stderr)

    trusted_log_handler.setFormatter(trusted_log_formatter)
    trusted_log_handler.setLevel(logging.INFO)

    error_logger = get_error_logger()
    error_logger.addHandler(trusted_log_handler)
    error_logger.propagate = False