summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2013-04-22 09:07:40 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2013-04-22 09:07:40 (GMT)
commite917052e1abb6e7722ef91d29c979be13ac9a539 (patch)
tree4fbce198864186ae114f653a36f6dac92e5cda80
parent25187e666b5fa53b7d2b1eeeb318f1267d87de13 (diff)
downloadcpython-e917052e1abb6e7722ef91d29c979be13ac9a539.zip
cpython-e917052e1abb6e7722ef91d29c979be13ac9a539.tar.gz
cpython-e917052e1abb6e7722ef91d29c979be13ac9a539.tar.bz2
Issue #17795: Reverted backwards-incompatible change in SysLogHandler with Unix domain sockets.
-rw-r--r--Lib/logging/handlers.py29
-rw-r--r--Misc/NEWS3
2 files changed, 27 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):
"""
diff --git a/Misc/NEWS b/Misc/NEWS
index 25ad406..e71b6ed 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -36,6 +36,9 @@ Core and Builtins
Library
-------
+- Issue #17795: Reverted backwards-incompatible change in SysLogHandler with
+ Unix domain sockets.
+
- Issue #17555: Fix ForkAwareThreadLock so that size of after fork
registry does not grow exponentially with generation of process.