diff options
author | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2013-04-22 09:07:40 (GMT) |
---|---|---|
committer | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2013-04-22 09:07:40 (GMT) |
commit | e917052e1abb6e7722ef91d29c979be13ac9a539 (patch) | |
tree | 4fbce198864186ae114f653a36f6dac92e5cda80 /Lib/logging | |
parent | 25187e666b5fa53b7d2b1eeeb318f1267d87de13 (diff) | |
download | cpython-e917052e1abb6e7722ef91d29c979be13ac9a539.zip cpython-e917052e1abb6e7722ef91d29c979be13ac9a539.tar.gz cpython-e917052e1abb6e7722ef91d29c979be13ac9a539.tar.bz2 |
Issue #17795: Reverted backwards-incompatible change in SysLogHandler with Unix domain sockets.
Diffstat (limited to 'Lib/logging')
-rw-r--r-- | Lib/logging/handlers.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index f286cd6..95e23a8 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -1,4 +1,4 @@ -# Copyright 2001-2012 by Vinay Sajip. All Rights Reserved. +# Copyright 2001-2013 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, @@ -18,7 +18,7 @@ Additional handlers for the logging package for Python. The core package is based on PEP 282 and comments thereto in comp.lang.python. -Copyright (C) 2001-2012 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2013 Vinay Sajip. All Rights Reserved. To use, simply 'import logging.handlers' and log away! """ @@ -767,7 +767,7 @@ class SysLogHandler(logging.Handler): } def __init__(self, address=('localhost', SYSLOG_UDP_PORT), - facility=LOG_USER, socktype=socket.SOCK_DGRAM): + facility=LOG_USER, socktype=None): """ Initialize a handler. @@ -786,18 +786,37 @@ class SysLogHandler(logging.Handler): self._connect_unixsocket(address) else: self.unixsocket = False + if socktype is None: + socktype = socket.SOCK_DGRAM self.socket = socket.socket(socket.AF_INET, socktype) if socktype == socket.SOCK_STREAM: self.socket.connect(address) + self.socktype = socktype self.formatter = None def _connect_unixsocket(self, address): - self.socket = socket.socket(socket.AF_UNIX, self.socktype) + use_socktype = self.socktype + if use_socktype is None: + use_socktype = socket.SOCK_DGRAM + self.socket = socket.socket(socket.AF_UNIX, use_socktype) try: self.socket.connect(address) + # it worked, so set self.socktype to the used type + self.socktype = use_socktype except socket.error: self.socket.close() - raise + if self.socktype is not None: + # user didn't specify falling back, so fail + raise + use_socktype = socket.SOCK_STREAM + self.socket = socket.socket(socket.AF_UNIX, use_socktype) + try: + self.socket.connect(address) + # it worked, so set self.socktype to the used type + self.socktype = use_socktype + except socket.error: + self.socket.close() + raise def encodePriority(self, facility, priority): """ |