mirror of
https://github.com/python/cpython.git
synced 2025-08-28 04:35:02 +00:00
Closed resource leak in SysLogHandler.
This commit is contained in:
parent
9c18778695
commit
fd28502fcf
2 changed files with 28 additions and 31 deletions
|
@ -756,8 +756,7 @@ class SysLogHandler(logging.Handler):
|
||||||
"""
|
"""
|
||||||
Closes the socket.
|
Closes the socket.
|
||||||
"""
|
"""
|
||||||
if self.unixsocket:
|
self.socket.close()
|
||||||
self.socket.close()
|
|
||||||
logging.Handler.close(self)
|
logging.Handler.close(self)
|
||||||
|
|
||||||
def mapPriority(self, levelName):
|
def mapPriority(self, levelName):
|
||||||
|
|
|
@ -3484,41 +3484,39 @@ class TimedRotatingFileHandlerTest(BaseFileTest):
|
||||||
def test_rollover(self):
|
def test_rollover(self):
|
||||||
fh = logging.handlers.TimedRotatingFileHandler(self.fn, 'S',
|
fh = logging.handlers.TimedRotatingFileHandler(self.fn, 'S',
|
||||||
backupCount=1)
|
backupCount=1)
|
||||||
try:
|
r = logging.makeLogRecord({'msg': 'testing'})
|
||||||
r = logging.makeLogRecord({'msg': 'testing'})
|
fh.emit(r)
|
||||||
fh.emit(r)
|
self.assertLogFile(self.fn)
|
||||||
self.assertLogFile(self.fn)
|
time.sleep(1.0)
|
||||||
time.sleep(1.0)
|
fh.emit(r)
|
||||||
fh.emit(r)
|
fh.close()
|
||||||
# At this point, we should have a recent rotated file which we
|
# At this point, we should have a recent rotated file which we
|
||||||
# can test for the existence of. However, in practice, on some
|
# can test for the existence of. However, in practice, on some
|
||||||
# machines which run really slowly, we don't know how far back
|
# machines which run really slowly, we don't know how far back
|
||||||
# in time to go to look for the log file. So, we go back a fair
|
# in time to go to look for the log file. So, we go back a fair
|
||||||
# bit, and stop as soon as we see a rotated file. In theory this
|
# bit, and stop as soon as we see a rotated file. In theory this
|
||||||
# could of course still fail, but the chances are lower.
|
# could of course still fail, but the chances are lower.
|
||||||
found = False
|
found = False
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
GO_BACK = 2 * 60 # seconds
|
GO_BACK = 2 * 60 # seconds
|
||||||
for secs in range(1, GO_BACK):
|
for secs in range(1, GO_BACK):
|
||||||
prev = now - datetime.timedelta(seconds=secs)
|
prev = now - datetime.timedelta(seconds=secs)
|
||||||
fn = self.fn + prev.strftime(".%Y-%m-%d_%H-%M-%S")
|
fn = self.fn + prev.strftime(".%Y-%m-%d_%H-%M-%S")
|
||||||
found = os.path.exists(fn)
|
found = os.path.exists(fn)
|
||||||
if found:
|
if found:
|
||||||
self.rmfiles.append(fn)
|
self.rmfiles.append(fn)
|
||||||
break
|
break
|
||||||
msg = 'No rotated files found, went back %d seconds' % GO_BACK
|
msg = 'No rotated files found, went back %d seconds' % GO_BACK
|
||||||
self.assertTrue(found, msg=msg)
|
self.assertTrue(found, msg=msg)
|
||||||
finally:
|
|
||||||
fh.close()
|
|
||||||
|
|
||||||
def test_invalid(self):
|
def test_invalid(self):
|
||||||
assertRaises = self.assertRaises
|
assertRaises = self.assertRaises
|
||||||
assertRaises(ValueError, logging.handlers.TimedRotatingFileHandler,
|
assertRaises(ValueError, logging.handlers.TimedRotatingFileHandler,
|
||||||
self.fn, 'X')
|
self.fn, 'X', delay=True)
|
||||||
assertRaises(ValueError, logging.handlers.TimedRotatingFileHandler,
|
assertRaises(ValueError, logging.handlers.TimedRotatingFileHandler,
|
||||||
self.fn, 'W')
|
self.fn, 'W', delay=True)
|
||||||
assertRaises(ValueError, logging.handlers.TimedRotatingFileHandler,
|
assertRaises(ValueError, logging.handlers.TimedRotatingFileHandler,
|
||||||
self.fn, 'W7')
|
self.fn, 'W7', delay=True)
|
||||||
|
|
||||||
def secs(**kw):
|
def secs(**kw):
|
||||||
return datetime.timedelta(**kw) // datetime.timedelta(seconds=1)
|
return datetime.timedelta(**kw) // datetime.timedelta(seconds=1)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue