Commit f4055c03 authored by Vinay Sajip's avatar Vinay Sajip

Merged fix for issue #12168 from 3.2.

parents f11a8333 4aa82c19
...@@ -769,6 +769,8 @@ class SysLogHandler(logging.Handler): ...@@ -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): ...@@ -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.
......
...@@ -1399,8 +1399,7 @@ class DatagramHandlerTest(BaseTest): ...@@ -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): ...@@ -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.')
......
...@@ -187,6 +187,9 @@ Core and Builtins ...@@ -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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment