summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2011-06-09 15:55:23 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2011-06-09 15:55:23 (GMT)
commit8dd8d582e3c6d1dd80f5b958284fcb7260209bf3 (patch)
tree9ce41344611954ba7b0c3ad9277fa19041f6cbf1
parentd9463b233c5fefbda3f1b9f2b37f7ff78a7c88ff (diff)
parent8168d10ea683d939ae52a1ed3d7c697c92bfae3d (diff)
downloadcpython-8dd8d582e3c6d1dd80f5b958284fcb7260209bf3.zip
cpython-8dd8d582e3c6d1dd80f5b958284fcb7260209bf3.tar.gz
cpython-8dd8d582e3c6d1dd80f5b958284fcb7260209bf3.tar.bz2
Merged fix for issue #12168 from 3.2.
-rw-r--r--Lib/logging/handlers.py6
-rw-r--r--Lib/test/test_logging.py8
-rw-r--r--Misc/NEWS3
3 files changed, 14 insertions, 3 deletions
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
index f17db0e..5779a7d 100644
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -769,6 +769,8 @@ class SysLogHandler(logging.Handler):
"""
return self.priority_map.get(levelName, "warning")
+ append_nul = True # some old syslog daemons expect a NUL terminator
+
def emit(self, record):
"""
Emit a record.
@@ -776,7 +778,9 @@ class SysLogHandler(logging.Handler):
The record is formatted, and then sent to the syslog server. If
exception information is present, it is NOT sent to the server.
"""
- msg = self.format(record) + '\000'
+ msg = self.format(record)
+ if self.append_nul:
+ msg += '\000'
"""
We need to convert record level to lowercase, maybe this will
change in the future.
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index ceefd95..b0b8e19 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -1399,8 +1399,7 @@ class DatagramHandlerTest(BaseTest):
pointing to that server's address and port."""
BaseTest.setUp(self)
addr = ('localhost', 0)
- self.server = server = TestUDPServer(addr, self.handle_datagram,
- 0.01)
+ self.server = server = TestUDPServer(addr, self.handle_datagram, 0.01)
server.start()
server.ready.wait()
self.sock_hdlr = logging.handlers.DatagramHandler('localhost',
@@ -1478,6 +1477,11 @@ class SysLogHandlerTest(BaseTest):
logger.error("sp\xe4m")
self.handled.wait()
self.assertEqual(self.log_output, b'<11>\xef\xbb\xbfsp\xc3\xa4m\x00')
+ self.handled.clear()
+ self.sl_hdlr.append_nul = False
+ logger.error("sp\xe4m")
+ self.handled.wait()
+ self.assertEqual(self.log_output, b'<11>\xef\xbb\xbfsp\xc3\xa4m')
@unittest.skipUnless(threading, 'Threading required for this test.')
diff --git a/Misc/NEWS b/Misc/NEWS
index 772eef9..83aa53a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -187,6 +187,9 @@ Core and Builtins
Library
-------
+- Issue #12168: SysLogHandler now allows NUL termination to be controlled using
+ a new 'append_nul' attribute on the handler.
+
- Issue #11583: Speed up os.path.isdir on Windows by using GetFileAttributes
instead of os.stat.