diff options
author | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2011-06-27 14:40:06 (GMT) |
---|---|---|
committer | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2011-06-27 14:40:06 (GMT) |
commit | 2353e35570ba5432cc1335c3926f8e5118c6404e (patch) | |
tree | 770ba4672c9e8777bfd6c7d07a9c15f666cb8ecb | |
parent | 345a5d735706a9ab41f1a682ed34815086970bb0 (diff) | |
download | cpython-2353e35570ba5432cc1335c3926f8e5118c6404e.zip cpython-2353e35570ba5432cc1335c3926f8e5118c6404e.tar.gz cpython-2353e35570ba5432cc1335c3926f8e5118c6404e.tar.bz2 |
Closes #12419: Added ident to SysLogHandler.
-rw-r--r-- | Doc/library/logging.handlers.rst | 9 | ||||
-rw-r--r-- | Lib/logging/handlers.py | 3 | ||||
-rw-r--r-- | Lib/test/test_logging.py | 5 |
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.') |