summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorl0rb <lorbritzer@yahoo.de>2019-11-06 21:21:40 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2019-11-06 21:21:40 (GMT)
commit519cb8772a9745b1c7d8218cabcd2f96ceda4d62 (patch)
treeedd2f5254bd9092e5216e33c69d9b2e57ff3d7c0 /Lib
parent5c0c325453a175350e3c18ebb10cc10c37f9595c (diff)
downloadcpython-519cb8772a9745b1c7d8218cabcd2f96ceda4d62.zip
cpython-519cb8772a9745b1c7d8218cabcd2f96ceda4d62.tar.gz
cpython-519cb8772a9745b1c7d8218cabcd2f96ceda4d62.tar.bz2
bpo-38716: stop rotating handlers from setting inherited namer and rotator to None (GH-17072)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/logging/handlers.py5
-rw-r--r--Lib/test/test_logging.py19
2 files changed, 22 insertions, 2 deletions
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
index 5641fee..c1aec98 100644
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -48,6 +48,9 @@ class BaseRotatingHandler(logging.FileHandler):
Not meant to be instantiated directly. Instead, use RotatingFileHandler
or TimedRotatingFileHandler.
"""
+ namer = None
+ rotator = None
+
def __init__(self, filename, mode, encoding=None, delay=False, errors=None):
"""
Use the specified filename for streamed logging
@@ -58,8 +61,6 @@ class BaseRotatingHandler(logging.FileHandler):
self.mode = mode
self.encoding = encoding
self.errors = errors
- self.namer = None
- self.rotator = None
def emit(self, record):
"""
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 53b5bfc..6de8803 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -5030,6 +5030,25 @@ class RotatingFileHandlerTest(BaseFileTest):
self.assertFalse(os.path.exists(namer(self.fn + ".3")))
rh.close()
+ def test_namer_rotator_inheritance(self):
+ class HandlerWithNamerAndRotator(logging.handlers.RotatingFileHandler):
+ def namer(self, name):
+ return name + ".test"
+
+ def rotator(self, source, dest):
+ if os.path.exists(source):
+ os.rename(source, dest + ".rotated")
+
+ rh = HandlerWithNamerAndRotator(
+ self.fn, backupCount=2, maxBytes=1)
+ self.assertEqual(rh.namer(self.fn), self.fn + ".test")
+ rh.emit(self.next_rec())
+ self.assertLogFile(self.fn)
+ rh.emit(self.next_rec())
+ self.assertLogFile(rh.namer(self.fn + ".1") + ".rotated")
+ self.assertFalse(os.path.exists(rh.namer(self.fn + ".1")))
+ rh.close()
+
@support.requires_zlib
def test_rotator(self):
def namer(name):