Несколько файлов журнала из разных модулей в Python - PullRequest
1 голос
/ 05 марта 2019

У меня есть три разных модуля, давайте назовем ModuleA, ModuleB и Common.Модуль Common содержит некоторые вспомогательные методы, которые требуются как для ModuleA, так и для ModuleB.

. Я хотел, чтобы для каждого модуля поддерживались отдельные файлы журналов, то есть должно быть ModuleA.log иModuleB.log.Итак, в каждом модуле я создал объект логгера с обработчиком файла и соответствующими именами файлов.

Теперь проблема в том, что если я вызываю метод в Common из ModuleA, журнал событий вCommon должен быть добавлен к ModuleA.log, и если я вызываю метод из ModuleB, журнал событий в Common должен быть добавлен к ModuleB.log.Для этого в настоящее время я передаю соответствующий logger объект в качестве параметра метода из модуля Common, который, по моему мнению, не является хорошим решением.

Есть ли способ / скороговорка для обработки этого сценария

1 Ответ

1 голос
/ 06 марта 2019

В Common может быть указание кеша, которое другие модули смогут импортировать и изменять.

Вот краткий пример со строками:

Common.py

CACHE = {'logger': None}

def func():
    print(CACHE['logger'])

ModuleA.py

from Common import CACHE, func

CACHE['logger'] = 'mod a'

func()
#mod a

ModuleB.py

from Common import CACHE, func

CACHE['logger'] = 'mod b'

func()
#mod b

Если вам кажется, что с помощью dict это выглядит немного беспорядочно, я думаю, вы могли бы потенциально создать класс для работы с конкретными битами, которые вам нужны, просто нужно обновить его вместо установки новых значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...