summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2011-06-27 14:40:06 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2011-06-27 14:40:06 (GMT)
commit2353e35570ba5432cc1335c3926f8e5118c6404e (patch)
tree770ba4672c9e8777bfd6c7d07a9c15f666cb8ecb
parent345a5d735706a9ab41f1a682ed34815086970bb0 (diff)
downloadcpython-2353e35570ba5432cc1335c3926f8e5118c6404e.zip
cpython-2353e35570ba5432cc1335c3926f8e5118c6404e.tar.gz
cpython-2353e35570ba5432cc1335c3926f8e5118c6404e.tar.bz2
Closes #12419: Added ident to SysLogHandler.
-rw-r--r--Doc/library/logging.handlers.rst9
-rw-r--r--Lib/logging/handlers.py3
-rw-r--r--Lib/test/test_logging.py5
3 files changed, 17 insertions, 0 deletions
diff --git a/Doc/library/logging.handlers.rst b/Doc/library/logging.handlers.rst
index e8353ea..82e3969 100644
--- a/Doc/library/logging.handlers.rst
+++ b/Doc/library/logging.handlers.rst
@@ -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
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)
Encodes the facility and priority into an integer. You can pass in strings
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
index 5779a7d..ef17081 100644
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -769,6 +769,7 @@ class SysLogHandler(logging.Handler):
"""
return self.priority_map.get(levelName, "warning")
+ ident = '' # prepended to all messages
append_nul = True # some old syslog daemons expect a NUL terminator
def emit(self, record):
@@ -779,6 +780,8 @@ class SysLogHandler(logging.Handler):
exception information is present, it is NOT sent to the server.
"""
msg = self.format(record)
+ if self.ident:
+ msg = self.ident + msg
if self.append_nul:
msg += '\000'
"""
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index b0b8e19..5d84114 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -1482,6 +1482,11 @@ class SysLogHandlerTest(BaseTest):
logger.error("sp\xe4m")
self.handled.wait()
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.')