Vous pouvez vous en débarrasser en encodant explicitement afin de pouvoir utiliser errors="replace" ou ignore Les octets résultants ne seront pas jolis mais ils seront enregistrés.
logging.error("Exception: " + str(ex.args[1].encode(encoding='charmap', errors='replace')))