diff options
author | JamesC <james.chiangwu@gmail.com> | 2019-10-28 14:50:01 +0100 |
---|---|---|
committer | James Chiang <james.chiangwu@gmail.com> | 2019-11-03 20:34:18 +0100 |
commit | 6f40820757d25ff1ccfdfcbdf2b45b8b65308010 (patch) | |
tree | 4b93be0b1516edf56fa74591823a030ab388a045 /test/functional/test_framework | |
parent | 6b71241291a184c9ee197bf5f0c7e1414417a0a0 (diff) |
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.
Diffstat (limited to 'test/functional/test_framework')
-rwxr-xr-x | test/functional/test_framework/test_framework.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index df12a696d4..03cd127a7d 100755 --- a/test/functional/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py @@ -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 |