Closes #12419: Added ident to SysLogHandler.

This commit is contained in:
Vinay Sajip 2011-06-27 15:40:06 +01:00
parent 345a5d7357
commit 2353e35570
3 changed files with 17 additions and 0 deletions

View File

@ -452,6 +452,15 @@ supports sending logging messages to a remote or local Unix syslog.
behaviour) but can be set to ``False`` on a ``SysLogHandler`` instance behaviour) but can be set to ``False`` on a ``SysLogHandler`` instance
in order for that instance to *not* append the NUL terminator. in order for that instance to *not* append the NUL terminator.
.. versionchanged:: 3.3
(See: :issue:`12419`.) In earlier versions, there was no facility for
an "ident" or "tag" prefix to identify the source of the message. This
can now be specified using a class-level attribute, defaulting to
``""`` to preserve existing behaviour, but which can be overridden on
a ``SysLogHandler`` instance in order for that instance to prepend
the ident to every message handled. Note that the provided ident must
be text, not bytes, and is prepended to the message exactly as is.
.. method:: encodePriority(facility, priority) .. method:: encodePriority(facility, priority)
Encodes the facility and priority into an integer. You can pass in strings Encodes the facility and priority into an integer. You can pass in strings

View File

@ -769,6 +769,7 @@ class SysLogHandler(logging.Handler):
""" """
return self.priority_map.get(levelName, "warning") return self.priority_map.get(levelName, "warning")
ident = '' # prepended to all messages
append_nul = True # some old syslog daemons expect a NUL terminator append_nul = True # some old syslog daemons expect a NUL terminator
def emit(self, record): def emit(self, record):
@ -779,6 +780,8 @@ class SysLogHandler(logging.Handler):
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) msg = self.format(record)
if self.ident:
msg = self.ident + msg
if self.append_nul: if self.append_nul:
msg += '\000' msg += '\000'
""" """

View File

@ -1482,6 +1482,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') self.assertEqual(self.log_output, b'<11>\xef\xbb\xbfsp\xc3\xa4m')
self.handled.clear()
self.sl_hdlr.ident = "h\xe4m-"
logger.error("sp\xe4m")
self.handled.wait()
self.assertEqual(self.log_output, b'<11>\xef\xbb\xbfh\xc3\xa4m-sp\xc3\xa4m')
@unittest.skipUnless(threading, 'Threading required for this test.') @unittest.skipUnless(threading, 'Threading required for this test.')