Merged fix for issue #12168 from 3.2.

This commit is contained in:
Vinay Sajip 2011-06-09 16:55:23 +01:00
commit 8dd8d582e3
3 changed files with 14 additions and 3 deletions

View file

@ -769,6 +769,8 @@ class SysLogHandler(logging.Handler):
""" """
return self.priority_map.get(levelName, "warning") return self.priority_map.get(levelName, "warning")
append_nul = True # some old syslog daemons expect a NUL terminator
def emit(self, record): def emit(self, record):
""" """
Emit a record. Emit a record.
@ -776,7 +778,9 @@ class SysLogHandler(logging.Handler):
The record is formatted, and then sent to the syslog server. If The record is formatted, and then sent to the syslog server. If
exception information is present, it is NOT sent to the server. 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 We need to convert record level to lowercase, maybe this will
change in the future. change in the future.

View file

@ -1399,8 +1399,7 @@ class DatagramHandlerTest(BaseTest):
pointing to that server's address and port.""" pointing to that server's address and port."""
BaseTest.setUp(self) BaseTest.setUp(self)
addr = ('localhost', 0) addr = ('localhost', 0)
self.server = server = TestUDPServer(addr, self.handle_datagram, self.server = server = TestUDPServer(addr, self.handle_datagram, 0.01)
0.01)
server.start() server.start()
server.ready.wait() server.ready.wait()
self.sock_hdlr = logging.handlers.DatagramHandler('localhost', self.sock_hdlr = logging.handlers.DatagramHandler('localhost',
@ -1478,6 +1477,11 @@ class SysLogHandlerTest(BaseTest):
logger.error("sp\xe4m") logger.error("sp\xe4m")
self.handled.wait() self.handled.wait()
self.assertEqual(self.log_output, b'<11>\xef\xbb\xbfsp\xc3\xa4m\x00') 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.') @unittest.skipUnless(threading, 'Threading required for this test.')

View file

@ -187,6 +187,9 @@ Core and Builtins
Library 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 - Issue #11583: Speed up os.path.isdir on Windows by using GetFileAttributes
instead of os.stat. instead of os.stat.