Avoiding code duplication in multiple except blocks in Logger class
Method decomposition looks like the way to go here:

def _try_post(self, json):
    """Try posting the message (unless this timed out previously).
    Return True if successful, False otherwise.

    """
    if not self._timedOut:
        try:
            self._post(json)
            return True
        except urllib.error.HTTPError:
            pass
        except socket.timeout:
            self._timedOut = True
    return False