a logger that logs to file as well as as screen
    see http://pythonhosted.org//logutils/ http://plumberjack.blogspot.gr/2010/10/supporting-alternative-formatting.html

    :Todo:
      - use new style formating for python > v3 i.e formatter = logging.Formatter(frmt.replace(" ", ""), style='{')
        #frmtC = frmt.translate(dict((ord(c), '') for c in "'{},"))

    :Parameters: `see <https://docs.python.org/2/library/logging.html#module-logging>`_
    :Example:
        >>> LOG = logger_double('', level_consol=logging.DEBUG, level_file=logging.DEBUG, verbose=3, filename="~\f.log")

def logger_multi(
        loggerName="",  # top
        level_consol=logging.DEBUG,
        level_file=logging.DEBUG,
        filename=None,
        verbose=1,
        when='midnight',
        interval=1,
        backupCount=7):
    """a logger that logs to file as well as as screen
    see http://pythonhosted.org//logutils/ http://plumberjack.blogspot.gr/2010/10/supporting-alternative-formatting.html

    :Todo:
      - use new style formating for python > v3 i.e formatter = logging.Formatter(frmt.replace(" ", ""), style='{')
        #frmtC = frmt.translate(dict((ord(c), '') for c in "'{},"))

    :Parameters: `see <https://docs.python.org/2/library/logging.html#module-logging>`_
    :Example:
        >>> LOG = logger_double('', level_consol=logging.DEBUG, level_file=logging.DEBUG, verbose=3, filename="~\f.log")
    """
    logger = logging.getLogger(loggerName)
    logger.setLevel(min(level_consol if level_consol else 100, level_file if level_file else 100))
    # logger.disable_existing_loggers = False
    if level_file:
        if filename is None:
            filename = "~\py.log"
        formatter = logging.Formatter(logging_format(verbose, 'str'))
        formatter.converter = time.gmtime
        hf = handlers.TimedRotatingFileHandler(
            filename, when=when, interval=interval,
            backupCount=backupCount, encoding='utf-8', delay=False, utc=True)
        hf.setFormatter(formatter)
        hf.setLevel(level_file)
        logger.addHandler(hf)
    if level_consol:
        logger.addHandler(LoggingColorHandler(level=level_consol, verbose=verbose))
    return logger