'Messages about what the framework is doing, warnings, errors, ...'

def message(self, msg):

    for logger in self:
        logger.message(msg)
    if (self._message_cache is not None):
        self._message_cache.append(msg)
    if (msg.level == 'ERROR'):
        self._error_occurred = True
        if self._error_listener:
            self._error_listener()
