mirror of https://github.com/python/cpython
Closes #12419: Added ident to SysLogHandler.
This commit is contained in:
parent
345a5d7357
commit
2353e35570
|
@ -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
|
||||||
|
|
|
@ -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'
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -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.')
|
||||||
|
|
Loading…
Reference in New Issue