У меня есть комплект тестов, который используется для запуска тестовых сценариев (фактически, классов, определенных в нем), и, проходя через тесты, он манипулирует регистратором python, так что все сообщения журнала выводятся в разные файлы, каждый из которых связан со своим тестом (классом). Это отлично работает для последовательных тестов, где я могу управлять обработчиками журналов в корневом логгере, которые позволяют всем сообщениям журналов (из любых библиотек, которые могут использовать классы тестов) записывать свои сообщения в соответствующий файл журнала тестов.
Но я действительно пытаюсь выяснить, как выполнять такие тесты параллельно (с помощью многопоточности или многопоточности), чтобы каждый поток имел свой собственный файл журнала для размещения всех таких сообщений.
Я считаю, что мне все еще нужно манипулировать корневым логгером, потому что это единственное место, где и тесты, и библиотеки, которые они используют, сойдутся, чтобы вести всю регистрацию в общем месте.
Я думал, что мог бы добавить обработчик для каждого потока, который содержал бы фильтр журнала, чтобы вести журнал только из определенного потока, и это приблизило бы меня (еще не пробовал, но в теории это возможно). И это, возможно, будет полное решение (если это действительно будет работать), за исключением одной вещи. Я не могу сказать авторам тестов, чтобы они сами не использовали потоки в своих тестах. Так что, если они это сделают, опять-таки, это решение потерпит неудачу. Я в порядке с внутренними тестовыми потоками, которые все записывают в один файл, но эти новые потоки не смогут войти в файл, в который ведет родительский поток. Фильтр ничего о них не знает.
И я могу ошибаться, но кажется, что многопоточность. Потоковые объекты не могут определить собственный родительский поток? Это исключает лучший фильтр обработчика журнала, который принимает сообщения, сгенерированные в потоке или любом из его дочерних / дочерних потоков. (?)
Любые предложения о том, как подойти к этому, были бы великолепны.
Спасибо
Bruce