Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
2543f500
Commit
2543f500
authored
Jul 30, 2017
by
Vinay Sajip
Committed by
GitHub
Jul 30, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bpo-30522: Implemented a method to allow setting a logging.StreamHander's stream. (GH-2921)
parent
78c18a9b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
49 additions
and
0 deletions
+49
-0
Doc/library/logging.handlers.rst
Doc/library/logging.handlers.rst
+13
-0
Lib/logging/__init__.py
Lib/logging/__init__.py
+20
-0
Lib/test/test_logging.py
Lib/test/test_logging.py
+14
-0
Misc/NEWS.d/next/Library/2017-07-30-10-07-58.bpo-30522.gAX1N-.rst
...S.d/next/Library/2017-07-30-10-07-58.bpo-30522.gAX1N-.rst
+2
-0
No files found.
Doc/library/logging.handlers.rst
View file @
2543f500
...
...
@@ -59,6 +59,18 @@ and :meth:`flush` methods).
:meth:`close` method is inherited from :class:`~logging.Handler` and so
does no output, so an explicit :meth:`flush` call may be needed at times.
.. method:: setStream(stream)
Sets the instance's stream to the specified value, if it is different.
The old stream is flushed before the new stream is set.
:param stream: The stream that the handler should use.
:return: the old stream, if the stream was changed, or *None* if it wasn't.
.. versionadded:: 3.7
.. versionchanged:: 3.2
The ``StreamHandler`` class now has a ``terminator`` attribute, default
value ``'\n'``, which is used as the terminator when writing a formatted
...
...
@@ -66,6 +78,7 @@ and :meth:`flush` methods).
set the handler instance's ``terminator`` attribute to the empty string.
In earlier versions, the terminator was hardcoded as ``'\n'``.
.. _file-handler:
FileHandler
...
...
Lib/logging/__init__.py
View file @
2543f500
...
...
@@ -997,6 +997,26 @@ class StreamHandler(Handler):
except
Exception
:
self
.
handleError
(
record
)
def
setStream
(
self
,
stream
):
"""
Sets the StreamHandler's stream to the specified value,
if it is different.
Returns the old stream, if the stream was changed, or None
if it wasn't.
"""
if
stream
is
self
.
stream
:
result
=
None
else
:
result
=
self
.
stream
self
.
acquire
()
try
:
self
.
flush
()
self
.
stream
=
stream
finally
:
self
.
release
()
return
result
def
__repr__
(
self
):
level
=
getLevelName
(
self
.
level
)
name
=
getattr
(
self
.
stream
,
'name'
,
''
)
...
...
Lib/test/test_logging.py
View file @
2543f500
...
...
@@ -698,6 +698,20 @@ class StreamHandlerTest(BaseTest):
finally:
logging.raiseExceptions = old_raise
def test_stream_setting(self):
"""
Test setting the handler's stream
"""
h = logging.StreamHandler()
stream = io.StringIO()
old = h.setStream(stream)
self.assertIs(old, sys.stderr)
actual = h.setStream(old)
self.assertIs(actual, stream)
# test that setting to existing value returns None
actual = h.setStream(old)
self.assertIsNone(actual)
# -- The following section could be moved into a server_helper.py module
# -- if it proves to be of wider utility than just test_logging
...
...
Misc/NEWS.d/next/Library/2017-07-30-10-07-58.bpo-30522.gAX1N-.rst
0 → 100644
View file @
2543f500
Added a ``setStream`` method to ``logging.StreamHandler`` to allow the
stream to be set after creation.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment