While debugging a complex race condition that only showed up when running several test cycles in parallel, I found it very difficult that the appenders PySys registers explicitly check for and discard all log output that isn't on the main thread. This meant both that improtant warning messages logged on a background thread didn't show up anywhere at all.
What we probably want is for each worker thread to set a threadlocal variable to indicate the run.log to be written to, to avoid having to discard all other output.
Maybe also a flag that allows all output from all threads to be written to a designated log file in real time, including any threads with this threadlocal not specified, and with the thread id (whcih ought to give an indication of ther testid and cycle being run) in the default format string.
It'd also be useful to have a helper method (maybe wrapping threading.createThread) to allow you to create background threads that log to the run.log of the test cycle they're associated with. And this should be used for any background threads we create, e.g. the stdin writer
I know that sounds complex but the implementation doesn't have to be; I've implemneted something similar before for my company
Replaced by https://github.com/pysys-test/pysys-test/issues/5