"""Configures the logger to record all calculation events on a log file."""
import sys
import logging


def log_exception(exc_type, exc_value, exc_tb):
    if issubclass(exc_type, KeyboardInterrupt):
        sys.__excepthook__(exc_type, exc_value, exc_tb)
        return
    logger = logging.getLogger('DockOnSurf')
    logger.error("", exc_info=(exc_type, exc_value, exc_tb))


def config_log(label):  # TODO Format log to break line after column 80.
    logging.captureWarnings(True)
    warnings_logger = logging.getLogger("py.warnings")

    logger = logging.getLogger(label)
    logger.setLevel(logging.INFO)

    log_handler = logging.FileHandler('dockonsurf.log', mode='w')
    log_handler.setLevel(logging.INFO)
    log_format = logging.Formatter(fmt='%(asctime)s-%(levelname)s: %(message)s',
                                   datefmt='%d-%b-%y %H:%M:%S')
    log_handler.setFormatter(log_format)

    logger.addHandler(log_handler)
    warnings_logger.addHandler(log_handler)
    sys.excepthook = log_exception

    return logger
