'Create and return a logger that logs to both console and
a log file.
Use :meth:`open_log` to open the log file in Console.
:returns: an initialised :class:`~logging.Logger`'

@property
def logger(self):

    if self._logger:
        return self._logger
    logger = logging.getLogger(u'workflow')
    if (not len(logger.handlers)):
        fmt = logging.Formatter(u'%(asctime)s    %(filename)s:%(lineno)s    %(levelname)-8s    %(message)s', datefmt=u'%H:%M:%S')
        logfile = logging.handlers.RotatingFileHandler(self.logfile, maxBytes=(1024 * 1024), backupCount=1)
        logfile.setFormatter(fmt)
        logger.addHandler(logfile)
    logger.setLevel(logging.DEBUG)
    self._logger = logger
    return self._logger
