Add closing and flushing of logging handlers
In order for BitcoinTestFramework to correctly restart after shutdown, the previous logging handlers need to be removed, or else logging will continue in the previous temp directory. "Flush" ensures buffers are emptied, and "close" ensures file handler close logging file.
This commit is contained in:
parent
6b71241291
commit
6f40820757
1 changed files with 12 additions and 1 deletions
|
@ -266,7 +266,18 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
self.log.error("Test failed. Test logging available at %s/test_framework.log", self.options.tmpdir)
|
||||
self.log.error("Hint: Call {} '{}' to consolidate all logs".format(os.path.normpath(os.path.dirname(os.path.realpath(__file__)) + "/../combine_logs.py"), self.options.tmpdir))
|
||||
exit_code = TEST_EXIT_FAILED
|
||||
logging.shutdown()
|
||||
# Logging.shutdown will not remove stream- and filehandlers, so we must
|
||||
# do it explicitly. Handlers are removed so the next test run can apply
|
||||
# different log handler settings.
|
||||
# See: https://docs.python.org/3/library/logging.html#logging.shutdown
|
||||
for h in list(self.log.handlers):
|
||||
h.flush()
|
||||
h.close()
|
||||
self.log.removeHandler(h)
|
||||
rpc_logger = logging.getLogger("BitcoinRPC")
|
||||
for h in list(rpc_logger.handlers):
|
||||
h.flush()
|
||||
rpc_logger.removeHandler(h)
|
||||
if cleanup_tree_on_exit:
|
||||
shutil.rmtree(self.options.tmpdir)
|
||||
return exit_code
|
||||
|
|
Loading…
Reference in a new issue