<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_logger(name, stream_type, jobs):
 """Create a logger component. :param name: name of logger child, i.e. logger will be named `noodles.<name>`. :type name: str :param stream_type: type of the stream that this logger will be inserted into, should be |pull_map| or |push_map|. :type stream_type: function :param jobs: job-keeper instance. :type jobs: dict, |JobKeeper| or |JobDB|. :return: a stream. The resulting stream receives messages and sends them on after sending an INFO message to the logger. In the case of a |JobMessage| or |ResultMessage| a meaningful message is composed otherwise the string representation of the object is passed."""

    logger = logging.getLogger('noodles').getChild(name)
    # logger.setLevel(logging.DEBUG)

    @stream_type
    def log_message(message):
        if message is EndOfQueue:
            logger.info("-end-of-queue-")

        elif isinstance(message, JobMessage):
            logger.info(
                "job    %10s: %s", message.key, message.node)

        elif isinstance(message, ResultMessage):
            job = jobs[message.key]
            if is_workflow(message.value):
                logger.info(
                    "result %10s [%s]: %s -> workflow %x", message.key,
                    job.node, message.status, id(message.value))
            else:
                value_string = repr(message.value)
                logger.info(
                    "result %10s [%s]: %s -> %s", message.key, job.node,
                    message.status, _sugar(value_string))

        else:
            logger.info(
                "unknown message: %s", message)

        return message

    return log_message