When using fetcher it logs errors [1] causing a build to fail. Fetcher is a utility module so it only need to propagate the error/exception and give the ability to the caller to handle the error/exception. The changes needs to be evaluated for don't break code base that expect the current behavior. [1] http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/bitbake/lib/bb/fetch2/__init__.py#n1636
After some review, i figured out that the current implementation of fetcher is too close to bitbake usage so there is no way to remove logger.error from fetcher. The bitbake/oe-core code uses try_mirrors to start download and is the main method exposed so there is no way to remove logging internally without affect dependent code.