(self, address=('localhost', SYSLOG_UDP_PORT),
                 facility=LOG_USER, socktype=None)
Initialize a handler.

        If address is specified as a string, a UNIX socket is used. To log to a
        local syslogd, "SysLogHandler(address="/dev/log")" can be used.
        If facility is not specified, LOG_USER is used. If socktype is
        specified as socket.SOCK_DGRAM or socket.SOCK_STREAM, that specific
        socket type will be used. For Unix sockets, you can also specify a
        socktype of None, in which case socket.SOCK_DGRAM will be used, falling
        back to socket.SOCK_STREAM.
Initialize a handler.
Initialize a handler .
def __init__(self, address=('localhost', SYSLOG_UDP_PORT),
                 facility=LOG_USER, socktype=None):
        """
        Initialize a handler.

        If address is specified as a string, a UNIX socket is used. To log to a
        local syslogd, "SysLogHandler(address="/dev/log")" can be used.
        If facility is not specified, LOG_USER is used. If socktype is
        specified as socket.SOCK_DGRAM or socket.SOCK_STREAM, that specific
        socket type will be used. For Unix sockets, you can also specify a
        socktype of None, in which case socket.SOCK_DGRAM will be used, falling
        back to socket.SOCK_STREAM.
        """
        logging.Handler.__init__(self)

        self.address = address
        self.facility = facility
        self.socktype = socktype

        if isinstance(address, str):
            self.unixsocket = True
            # Syslog server may be unavailable during handler initialisation.
            # C's openlog() function also ignores connection errors.
            # Moreover, we ignore these errors while logging, so it not worse
            # to ignore it also here.
            try:
                self._connect_unixsocket(address)
            except OSError:
                pass
        else:
            self.unixsocket = False
            if socktype is None:
                socktype = socket.SOCK_DGRAM
            host, port = address
            ress = socket.getaddrinfo(host, port, 0, socktype)
            if not ress:
                raise OSError("getaddrinfo returns an empty list")
            for res in ress:
                af, socktype, proto, _, sa = res
                err = sock = None
                try:
                    sock = socket.socket(af, socktype, proto)
                    if socktype == socket.SOCK_STREAM:
                        sock.connect(sa)
                    break
                except OSError as exc:
                    err = exc
                    if sock is not None:
                        sock.close()
            if err is not None:
                raise err
            self.socket = sock
            self.socktype = socktype
def __init__ ( self , address = ( 'localhost' , SYSLOG_UDP_PORT ) , facility = LOG_USER , socktype = None ) : logging . Handler . __init__ ( self ) self . address = address self . facility = facility self . socktype = socktype if isinstance ( address , str ) : self . unixsocket = True # Syslog server may be unavailable during handler initialisation. # C's openlog() function also ignores connection errors. # Moreover, we ignore these errors while logging, so it not worse # to ignore it also here. try : self . _connect_unixsocket ( address ) except OSError : pass else : self . unixsocket = False if socktype is None : socktype = socket . SOCK_DGRAM host , port = address ress = socket . getaddrinfo ( host , port , 0 , socktype ) if not ress : raise OSError ( "getaddrinfo returns an empty list" ) for res in ress : af , socktype , proto , _ , sa = res err = sock = None try : sock = socket . socket ( af , socktype , proto ) if socktype == socket . SOCK_STREAM : sock . connect ( sa ) break except OSError as exc : err = exc if sock is not None : sock . close ( ) if err is not None : raise err self . socket = sock self . socktype = socktype