Overrides the superclass `build()` and filters the output. Messages are deferred to `push_log`, whereas the
        final message is checked for a success message. If the latter is found, only the new image id is returned.

        :param tag: Tag of the new image to be built. Unlike in the superclass, this is obligatory.
        :type tag: unicode | str
        :param add_latest_tag: In addition to the image ``tag``, tag the image with ``latest``.
        :type add_latest_tag: bool
        :param add_tags: Additional tags. Can also be used as an alternative to ``add_latest_tag``.
        :type add_tags: list[unicode | str]
        :param raise_on_error: Raises errors in the status output as a DockerStatusException. Otherwise only logs
         errors.
        :type raise_on_error: bool
        :param kwargs: See :meth:`docker.client.Client.build`.
        :return: New, generated image id or `None`.
        :rtype: unicode | str

def build(self, tag, add_latest_tag=False, add_tags=None, raise_on_error=True, **kwargs):
        """
        Overrides the superclass `build()` and filters the output. Messages are deferred to `push_log`, whereas the
        final message is checked for a success message. If the latter is found, only the new image id is returned.

        :param tag: Tag of the new image to be built. Unlike in the superclass, this is obligatory.
        :type tag: unicode | str
        :param add_latest_tag: In addition to the image ``tag``, tag the image with ``latest``.
        :type add_latest_tag: bool
        :param add_tags: Additional tags. Can also be used as an alternative to ``add_latest_tag``.
        :type add_tags: list[unicode | str]
        :param raise_on_error: Raises errors in the status output as a DockerStatusException. Otherwise only logs
         errors.
        :type raise_on_error: bool
        :param kwargs: See :meth:`docker.client.Client.build`.
        :return: New, generated image id or `None`.
        :rtype: unicode | str
        """
        response = super(DockerClientWrapper, self).build(tag=tag, **kwargs)
        # It is not the kwargs alone that decide if we get a stream, so we have to check.
        if isinstance(response, tuple):
            image_id = response[0]
        else:
            last_log = self._docker_log_stream(response, raise_on_error)
            if last_log and last_log.startswith('Successfully built '):
                image_id = last_log[19:]  # Remove prefix
            else:
                image_id = None

        if not image_id:
            return None

        self.add_extra_tags(image_id, tag, add_tags, add_latest_tag)
        return image_id