def test_reopen_files_missing_wref(self): # simulate concurrent iteration that pops the ref def wr(): loghandler._reopenable_handlers.remove(wr) loghandler._reopenable_handlers.append(wr) loghandler.reopenFiles()
def test_logfile_reopening(self): # # This test only applies to the simple logfile reopening; it # doesn't work the same way as the rotating logfile handler. # paths = self.mktemp(), self.mktemp(), self.mktemp() d = { "path0": paths[0], "path1": paths[1], "path2": paths[2], } text = self._sampleconfig_template % d conf = self.get_config(text) self.assertEqual(len(conf.loggers), 2) # Build the loggers from the configuration, and write to them: conf.loggers[0]().info("message 1") conf.loggers[1]().info("message 2") npaths1 = [self.move(fn) for fn in paths] # # We expect this to re-open the original filenames, so we'll # have six files instead of three. # loghandler.reopenFiles() # # Write to them again: conf.loggers[0]().info("message 3") conf.loggers[1]().info("message 4") npaths2 = [self.move(fn) for fn in paths] # # We expect this to re-open the original filenames, so we'll # have nine files instead of six. # loghandler.reopenFiles() # # Write to them again: conf.loggers[0]().info("message 5") conf.loggers[1]().info("message 6") # # We should now have all nine files: for fn in paths: self.assert_(os.path.isfile(fn), "%r must exist" % fn) for fn in npaths1: self.assert_(os.path.isfile(fn), "%r must exist" % fn) for fn in npaths2: self.assert_(os.path.isfile(fn), "%r must exist" % fn) # # Clean up: for logger in conf.loggers: logger = logger() for handler in logger.handlers[:]: logger.removeHandler(handler) handler.close()
def test_logfile_reopening(self): # # This test only applies to the simple logfile reopening; it # doesn't work the same way as the rotating logfile handler. # paths = self.mktemp(), self.mktemp(), self.mktemp() d = { "path0": paths[0], "path1": paths[1], "path2": paths[2], } text = self._sampleconfig_template % d conf = self.get_config(text) self.assertEqual(len(conf.loggers), 2) # Build the loggers from the configuration, and write to them: conf.loggers[0]().info("message 1") conf.loggers[1]().info("message 2") npaths1 = [self.move(fn) for fn in paths] # # We expect this to re-open the original filenames, so we'll # have six files instead of three. # loghandler.reopenFiles() # # Write to them again: conf.loggers[0]().info("message 3") conf.loggers[1]().info("message 4") npaths2 = [self.move(fn) for fn in paths] # # We expect this to re-open the original filenames, so we'll # have nine files instead of six. # loghandler.reopenFiles() # # Write to them again: conf.loggers[0]().info("message 5") conf.loggers[1]().info("message 6") # # We should now have all nine files: for fn in paths: self.assertTrue(os.path.isfile(fn), "%r must exist" % fn) for fn in npaths1: self.assertTrue(os.path.isfile(fn), "%r must exist" % fn) for fn in npaths2: self.assertTrue(os.path.isfile(fn), "%r must exist" % fn) # # Clean up: for logger in conf.loggers: logger = logger() for handler in logger.handlers[:]: logger.removeHandler(handler) handler.close()
def cmd_reopen_transcript(self, args): reopenFiles() if self.transcript is not None: self.transcript.reopen()
def sigusr2_handler(signum, frame): "Rotate logfiles in response to SIGUSR2." "" reopenFiles()