class logging.handlers.SocketHandler(host, port)
Returns a new instance of the SocketHandler
class intended to communicate with a remote machine whose address is given by host and port.
Changed in version 3.4: If port
is specified as None
, a Unix domain socket is created using the value in host
- otherwise, a TCP socket is created.
-
close()
-
Closes the socket.
-
emit()
-
Pickles the record’s attribute dictionary and writes it to the socket in binary format. If there is an error with the socket, silently drops the packet. If the connection was previously lost, re-establishes the connection. To unpickle the record at the receiving end into a
LogRecord
, use themakeLogRecord()
function.
-
handleError()
-
Handles an error which has occurred during
emit()
. The most likely cause is a lost connection. Closes the socket so that we can retry on the next event.
-
makeSocket()
-
This is a factory method which allows subclasses to define the precise type of socket they want. The default implementation creates a TCP socket (
socket.SOCK_STREAM
).
-
makePickle(record)
-
Pickles the record’s attribute dictionary in binary format with a length prefix, and returns it ready for transmission across the socket.
Note that pickles aren’t completely secure. If you are concerned about security, you may want to override this method to implement a more secure mechanism. For example, you can sign pickles using HMAC and then verify them on the receiving end, or alternatively you can disable unpickling of global objects on the receiving end.
-
send(packet)
-
Send a pickled string packet to the socket. This function allows for partial sends which can happen when the network is busy.
-
createSocket()
-
Tries to create a socket; on failure, uses an exponential back-off algorithm. On initial failure, the handler will drop the message it was trying to send. When subsequent messages are handled by the same instance, it will not try connecting until some time has passed. The default parameters are such that the initial delay is one second, and if after that delay the connection still can’t be made, the handler will double the delay each time up to a maximum of 30 seconds.
This behaviour is controlled by the following handler attributes:
-
retryStart
(initial delay, defaulting to 1.0 seconds). -
retryFactor
(multiplier, defaulting to 2.0). -
retryMax
(maximum delay, defaulting to 30.0 seconds).
This means that if the remote listener starts up after the handler has been used, you could lose messages (since the handler won’t even attempt a connection until the delay has elapsed, but just silently drop messages during the delay period).
-
Please login to continue.