Я пытаюсь войти в один файл, используя два разных средства форматирования.Вариант использования для этого - получить файл, который выглядит следующим образом:
+-------------------+
| Setup the servers |
+-------------------+
2018-10-10 17:24:33,891 [INFO] - func=test_01_pass:[7] - location=debug_tests.py - MSG=Doing something with servers
+---------------------------------------------------+
| Login to sdc with user: cs0008 & password: 123456 |
+---------------------------------------------------+
2018-10-10 17:24:33,892 [INFO] - func=test_01_pass:[11] - location=debug_tests.py - MSG=Doing something to login
+----------------+
| Create Service |
+----------------+
2018-10-10 17:24:33,892 [INFO] - func=test_01_pass:[14] - location=debug_tests.py - MSG=Doing create service flow
+----------------------+
| Teardown the servers |
+----------------------+
2018-10-10 17:24:33,893 [INFO] - func=test_01_pass:[17] - location=debug_tests.py - MSG=Doing something to teardown the servers
Где log.info () использует форматер с меткой времени и т. Д., А в другом журнале я создал log.step ()использует форматировщик без отметки времени.
При определении двух streamHandlers, которые записывают в sys.stdout, вывод кода:
logger.step('Create Service')
logger.info('Doing create service flow')
logger.step('Teardown the servers')
logger.info('Doing something to teardown the servers')
выглядит нормально, как видно из первого фрагмента выше.
Однако при использовании двух файловых обработчиков, которые пишут в один и тот же журнал, вывод искажается:
2018-10-10 17:24:33,891 [INFO] - func=test_01_pass:[7] - location=d
+-----------------------------------------------2018-10-10 17:24:33,892 [INFO] - func=test_01_pass:[11] - location=debug_tests.py - MSG=Doing something to login
2018-10-10 17:24:33,892 [INFO] - func=test_01_pass:[14] - l
+----------------------+
| Teardown the servers |
+---2018-10-10 17:24:33,893 [INFO] - func=test_01_pass:[17] - location=debug_tests.py - MSG=Doing something to teardown the servers
Есть ли способ записи в тот же файл журнала с использованием двух разных форматеров ?
------ Дополнительная информация ------
Я нашел решение Как использовать разные средства форматирования с одним и тем же обработчиком журналирования в python , что позволяет изменять форматер в зависимости от диспетчера, идентификатора, какой модуль его записывает.Я пытаюсь изменить класс DispatchingFormatter из этого решения для выбора средства форматирования в зависимости от уровня серьезности сообщения.